in reply to Multiple / Mapping Search and Replace

A couple of comments on pod2usage, um, usage :)

Since pod2usage by default exits, your explicit exit calls are redundant at best and confusing at worst. This

pod2usage(-verbose => 1) && exit if defined $opt_help;
is the same as this:
pod2usage(-verbose => 1) if defined $opt_help;

You could also take advantage of the -message option. This

print "$0: input_file required\n"; pod2usage(-verbose => 0) && exit
is the same as this:
pod2usage(-verbose => 0, -message => "$0: input_file required\n")

A comment on Getopt::Long usage: instead of declaring several separate $opt_XXX scalar variables, it might be more natural Storing options values in a hash.