c:\@Work\Perl>perl -wMstrict -le
"my %xlate_map = qw/ ( l_paren ) r_paren { l_curly } r_curly /;
my $xlate_targets = join '', map quotemeta, keys %xlate_map;
;;
sub xlate {
my ($s, $targets, $hr_map) = @_;
;;
(my $t = $s) =~ s{ ([$targets]) }{$hr_map->{$1}}xmsg;
return $t;
}
;;
my $str = 'a { b } c ( d ) e';
my $xlt = xlate($str, $xlate_targets, \%xlate_map);
print qq{'$xlt'};
"
'a l_curly b r_curly c l_paren d r_paren e'
####
c:\@Work\Perl>perl -wMstrict -le
"use 5.014;
;;
my %xlate_map = qw/ ( l_paren ) r_paren { l_curly } r_curly /;
;;
sub xlate {
my ($s, $hr_map) = @_;
;;
my $targets = join '', map quotemeta, keys %$hr_map;
return $s =~ s{ ([$targets]) }{$hr_map->{$1}}xmsgr;
}
;;
my $str = 'a { b } c ( d ) e {{F}} ((G))';
my $xlt = xlate($str, \%xlate_map);
print qq{'$xlt'};
"
'a l_curly b r_curly c l_paren d r_paren e l_curlyl_curlyFr_curlyr_curly l_parenl_parenGr_parenr_paren'
####
c:\@Work\Perl>perl -wMstrict -le
"print qq{Perl version $] };
;;
BEGIN {
my %xlate_map = qw/ ( l_paren ) r_paren { l_curly } r_curly /;
my $xlate_targets = join '', map quotemeta, keys %xlate_map;
;;
sub xlate {
my ($s) = @_;
;;
(my $t = $s) =~ s{ ([$xlate_targets]) }{$xlate_map{$1}}xmsog;
return $t;
}
}
;;
my $str = 'a { b } c ( d ) e {{F}} ((G))';
my $xlt = xlate($str);
print qq{'$xlt'};
"
Perl version 5.008009
'a l_curly b r_curly c l_paren d r_paren e l_curlyl_curlyFr_curlyr_curly l_parenl_parenGr_parenr_paren'