perl -Mstrict -Mwarnings -le ' my $c = q{asdfghjk}; my @regex = ( { lh => q{(gh)}, rh => q{__$1__}, }, { lh => q{(h_)}, rh => q{_h!$1!}, }, ); print q{Original: }, $c; foreach my $i ( 0 .. $#regex ) { $c =~ s/$regex[$i]{lh}/$regex[$i]{rh}/gmsx; } print q{Final: }, $c; ' #### Original: asdfghjk Final: asdf__g_h!h_!__jk #### Original: asdfghjk Final: asdf__$1__jk