PATTERN
を持つ文字列を検索し、
見つかれば、REPLACEMENT
テキストと置き換え、置換を行った数を返す。
見つからなければ false (つまり 0)を返す。
オプションとして `g' をつけると、
見つかった全てのパターンについて置換を行う。
`e' も同様にオプションで、
REPLACEMENT
は ""
で括られた文字列ではなく、
expression として評価される。
スラッシュの代わりに
アルファベット・数字でない任意の文字を delimiter としてよい。
-
「'」を用いると、
REPLACEMENT
について interpret しない
(`e' はこれに優先する)。 -
「`」を用いると、
REPLACEMENT
は実行すべきコマンド名と見なされ、
その出力が実際の置換文字列として用いられる。
=~
演算子 や !~
演算子を通して文字列を指定しなければ、
$_
について検索し、置換する。
(=~
を用いて指定する文字列はスカラー変数、配列の要素、
またはこれら 2 つへの代入、即ち、左辺値でなければならない。)
PATTERN
が $
を含み、
"文字列最後"ではなくて"変数"に見える場合は、
実行時にその変数が PATTERN
に書き込まれる。
パターンのコンパイルを最初の一回だけにし、変数の書き換えを行いたい時は、
`o' を最後につける。PATTERN
がヌル文字列に評価された場合、
直前に成功した正規表現が代わりに用いられる。正規表現の項を参照。
s/\bgreen\b/mauve/g; # wintergreen は変更しない
$path =~ s|/usr/bin|/usr/local/bin|;
s/Login: $foo/Login: $bar/; # 実行時に決まるパターン
($foo = $bar) =~ s/bar/foo/;
$_ = 'abc123xyz';
s/\d+/$&*2/e; # 'abc246xyz' を出力
s/\d+/sprintf("%5d",$&)/e; # 'abc 246xyz' を出力
s/\w/$& x 2/eg; # 'aabbcc 224466xxyyzz' を出力
s/([^ ]*) *([^ ]*)/$2 $1/; # 最初の 2 フィールドを入れ替え
注意:
最後の例で \
の代わりに $
を使用していることに注意。
正規表現の項を参照。See section 正規表現.