I like the "switch" idea quite a bit, myself. Here's something you might do right off the bat:
those lc "misc" calls are pointless (the string IS in lower case, that's the part you control). So, at the top,
my $location = lc $query->param('place) or 'links'; # or a sensible default
Which converts the value you *can't* control to lowercase
. One nice thing about the "switch" idea is that you can
fall through to a default if the value of the parameter isn't valid.
Philosophy can be made out of anything. Or less -- Jerry A. Fodor