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の取得