%regexes = (first => ['(\w+) (\w+) (\w+)', '$1 $3'], second => ['and so on', 'and on'] ); my $string = "big hairy mess"; foreach my $re (keys %regexes) { $string =~ s/$regexes{$re}[0]/$regexes{$re}[1]/i; print "$re: $string\n"; }