SEARCHLIST
に指定した全ての文字を、
REPLACEMENTLIST
にしたがって変換する。
置換もしくは削除した文字数を返す。
=~
や !~
を使って文字列を指定しなかった場合は、
$_
文字列が変換される。
(=~
を使って指定する文字列はスカラー変数、配列の 1 要素、
またはこれらへの代入でなくてはならない。即ち、左辺値。)
sed 信者のために、y
も tr
の別名としてある。
-
修飾子
c
を指定すると、
SEARCHLIST
文字セットの補集合が使われる。 -
修飾子
d
を指定すると、SEARCHLIST
によって指定される文字で、
REPLACEMENTLIST
内にないものが全て削除される。
(注意: これは tr
プログラムの挙動に比べてより柔軟な処理である。
tr
プログラムには、
SEARCHLIST
に含まれる文字を全て削除するものがある) -
修飾子
s
を指定すると、
変換されて同じ文字になった文字列を 1 文字に縮める。
修飾子 d
を用いると、
REPLACEMENTLIST
は常に指定したそのものとして解釈される。
それ以外の場合で、
REPLACEMENTLIST
が SEARCHLIST
よりも短い場合は、
同じ長さになるまで最後の文字が繰り返される。
REPLACEMENTLIST
がヌルの場合は、SEACHLIST
がコピーされる。
この後者は、あるクラスに含まれる文字をカウントしたり、
あるクラスの文字の連続を縮めたりするのに便利である。
$ARGV[1] =~ y/A-Z/a-z/; # 小文字に統一する
$cnt = tr/*/*/; # $_ 内の * を数える
$cnt = tr/0-9//; # $_ 内の数字を数える
tr/a-zA-Z//s; # bookkeeper -> bokeper
($HOST = $host) =~ tr/a-z/A-Z/;
y/a-zA-Z/ /cs; # アルファベット以外を 1 文字のスペースに置換
tr/\200-\377/\0-\177/; # 8 ビット目を消す