in reply to Efficiently create an IF/ELSE regex

Not exactly sure what you want, but maybe something like (needs 5.10+ for \K):

c:\@Work\Perl>perl -wMstrict -le "use 5.010; ;; my %xlate = (qq{\n} => 'n', qq{\t} => 't', qq{\r} => 'r'); my $interp = join '', keys %xlate; $interp = qr{ [\Q$interp\E] }xms; print $interp; ;; my $pre = qr{ AD | MAIN }xms; ;; for my $s (qq{AD\thomas}, qq{MAIN\nancy}, qq{nancy}) { printf qq{'$s' -> }; (my $t = $s) =~ s{ $pre \K ($interp) }{$xlate{$1}}xmsg; print qq{'$t'}; } " \?^msx: [\ \ ] ) 'AD homas' -> 'ADthomas' 'MAIN ancy' -> 'MAINnancy' 'nancy' -> 'nancy'


Give a man a fish:  <%-(-(-(-<