鉴于......
Ax~B~xCx~xDx
...发出......
A~-B-~C~-~D~
我想用〜替换〜字符,用〜。
替换x字符我可以写......
s/~/-/g;s/x/~/g;
...但是(看起来像)经过两次字符串。
答案 0 :(得分:14)
根据字符使用“transliterate”进行替换。试试这个:
tr/~x/\-~/;
答案 1 :(得分:2)
由于你正在处理单个字符,tr ///是明显的答案:
tr/~x/-~/;
但是,你需要s ///来处理更长的序列:
my %subs = ( '~' => '-', 'x' => '~' );
my $pat = join '|', map quotemeta, keys %subs;
s/($pat)/$subs{$1}/g;