in reply to Storing substitution patterns

sub mksub (&) { my $sub = shift; return sub { local( $_ ) = $_[0]; $sub->(); $_[0]=$_ }; } %regexes = ( first => mksub { s/(\w+) (\w+) (\w+)/$1 $3/ }, second => mksub { s/and so on/and on/ }, ); my $string = "big hairy mess"; for my $re ( keys %regexes ) { $regexes{ $re }->( $string ); print "$re: $string\n"; }