If you wanted to throw up a personal project using mod_perl you pretty much had to pay for a hosted box. At least once people realized how insecure it was to run shared code on a mod_perl host.
You could find hosts but it was comparatively expensive.
Plus it was a huge pain in the neck to do things like install the modules you needed on a shared host.
This was a huge barrier to entry and it made things unreasonably difficult. Meanwhile PHP was very low friction. And at the time, so many new people were teaching themselves web development to scratch itches and solve problems that these barriers were a big deal.
Which sucks, because mod_perl was amazing, beautiful tech.
People realized this immediately, given how much mod_perl exposed Apache's guts to script writers (so they could write modules in Perl--a feature few asked for, and fewer used) and how tightly coupled the two were, so much that calling Perl's humble 'exit' built-in became a notorious footgun (until, IIRC 5.6), terminating the underlying Apache process itself.