tr変換演算子のテストメモ
置換はイメージしやすいのですが、変換は思わぬ結果になる場合が多いですね。
以下にtr変換演算子のテストメモをしときます。
#1文字ずつ対応して変換(ケース1) $string = 'aaaa,bbbb,cccc'; $string =~ tr/abc/xyz/; print $string, "\n"; # xxxx,yyyy,zzzz が表示される # #1文字ずつ対応して変換(ケース2) $string = 'aaaa,bbbb,cccc'; $string =~ tr/ac/xz/; print $string, "\n"; # xxxx,bbbb,zzzz が表示される # #検索文字リストが多い場合(検索文字リストのcはyと対応する) $string = 'aaaa,bbbb,cccc'; $string =~ tr/abc/xy/; print $string, "\n"; # xxxx,yyyy,yyyy が表示される # #変換文字リストが多い場合(変換文字リストのzは無視) $string = 'aaaa,bbbb,cccc'; $string =~ tr/ab/xyz/; print $string, "\n"; # xxxx,yyyy,cccc が表示される # #s修飾子使用の場合(連続文字が一つにまとめられて変換) $string = 'aaaa,bbbb,cccc'; $string =~ tr/abc/xyz/s; print $string, "\n"; # x,y,y が表示される # #c修飾子使用の場合(検索文字リストに含まれない『,』が変換対象になる) $string = 'aaaa,bbbb,cccc'; $string =~ tr/abc/:/c; print $string, "\n"; # aaaa:bbbb:cccc が表示される # #c修飾子とd修飾子使用の場合(検索文字リストに含まれない『,』を削除) $string = 'aaaa,bbbb,cccc'; $string =~ tr/abc/:/cd; print $string, "\n"; # aaaabbbbcccc が表示される