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