- Mojolicious. Catalyst is great but probably won’t buy you anything over Mojolicious for this project and Mojolicious has a more agile, responsive, and modern code base at this point; including many stand alone tools and one-liner utilities. Dancer is fine but there is no reason to prefer it over the others or even something like Amon2.
- Lucy, Googlish search indexing.
- Plack/PSGI, server/code glue. All modern Perl code for the web speaks PSGI.
- Prefer PostgreSQL to MySQL. DBIx::Class is quite complicated with a steep learning curve but it can repay you tremendously over the life of a project. NB: search indexing does not match well with relational databases and Lucy has its own index/DB. Your DB will not be used directly in searches.
Of further interest
I’m a few years out of the loop regarding these so I’ll just list everything that jumps out as interesting–
Beware of any solutions that perform live queries. They range from inefficient to likely violating terms of service. Also, let users choose which they want. No IP->Geo lookups are completely bomb-proof. Accept headers can be as good or better for determining preference automatically anyway and there should always be a way for the user to choose (language, results groups, location) manually.
Last notes: you will have to make up your own mind and if you are like most Perl webdevs unfamiliar with this stuff, you will also probably need to modernize your practices and thinking or suffer for it. In that regard, please see Modern Perl. Things like unit tests are ultimately *much* more important than the framework you pick. Examine the unit tests of various distributions to see what flavor seems the most fun/easy to you. That might help you off the fence if you’re having a hard time deciding.