tr
tr/SEARCHLIST/REPLACEMENTLIST/cds
SEARCHLISTに含まれる文字を対応するREPLACEMENTLISTの文字に変換します。この際に =~ や |~ を使って変換対象となる文字列を指定しないと $_ の内容が対象となります。- を使って範囲で指定することもできます。
REPLACEMENTLISTが空ではなくてSEARCHLISTよりも短い場合は、最後の文字で足りない分を補います。ただし d 修飾子が付いている場合はREPLACEMENTLISTはそのまま使われます。
またtrはSEARCHLISTに含まれた文字数を返してくるので、特定の種類の文字の数を数えるのにも使えます。こういうときは、REPLACEMENTLISTを空にするとSEARCHLISTがREPLACEMENTLISTとして使われるので楽に書けます。これも d 修飾子が付いているときはそのままです。
後ろにつける修飾子は以下のような意味です。
修飾子 | 意味 |
---|---|
c | SEARCHLISTに含まれない文字を探します。 |
d | SEARCHLISTに対応するREPLACEMENTLISTがない場合にその文字を削除します。 |
s | 置き換えた結果、同じ文字が連続した場合に連続したものを1文字にします。 |
サンプルプログラム
# $aの1をaに、2をbに、3をcに変換する # 例) 01234abcde → 0abc4abcde $a =~ tr/123/abc/; # $aの小文字に変換する # 例) ABcd → abcd $a =~ tr/A-Z/a-z/; # $aのアルファベットの数を$countに入れる $count = ($a =~ tr/a-zA-Z//); # $aのアルファベット以外の数を$countに入れる # 例) 12abc の時 2 $count = ($a =~ tr/a-zA-Z//c); # $aの数字を削除する # 例) a1b2c3 → abc $a =~ tr/0-9//d; # $aの連続した数字をそれぞれ一つにする # 例) 122333221 → 12321 $a =~ tr/0-9//s; # $aの連続した数字をまとめて+にする # 例) a135b → a+b $a =~ tr/0-9/+/s;
関連項目
・大文字小文字変換・ROT13の取得