Pattern
POINT
Pattern 結合演算子
SYNTAX
=~
DESC
左辺に指定されたデータに 右辺のパターン処理の結果を代入する
置換(Substitute)
SYNTAX
s/regexp/置換文字列/
$str = "This is a pen.";
$str =~ s/pen/book/;
POINT
区切り文字は / 以外も OK ( m と同じ )
s/text/txt/
s(text)(txt)
s(text)/txt/
s/(.+)\..{3}/"print \1\n"/e;
照合(Match)
SYNTAX
m/PATTERN/OPT
RET
true : マッチ
false : マッチせず
POINT
m の直後の区切り文字は任意
英数字 + " " 以外
[^[:alnum:] ]
$ret =~ m|/var/foo/.*|
$ret =~ m/^foo/
$ret =~ /^foo/
$_ =~ m/^foo/
m/^foo/
/^foo/
i : Insentive
o : Once ( Pattern 中の変数展開を一度しかしない )
g : Global ( 照合を Global にする == 繰り返す )
m : Multi Line 文字列を複数行として扱う
s : Single Line 文字列を単一行として扱う
x : Xtended ( Comment が利用可能な Regexp )
<(H|h)(R|r)>
<HR>
$str = "/var/log/maillog";
while ( $str =~ m|/.*?log| ) {
print "$1\n"
}
$str = foo\nbar\ngoo
foo
bar
goo
while ( $str =~ m/.+?s/sg ) {
print "$& \n";
}
while ( $str =~ m|
(
/ # Directory 区切り文字 /
.*? # 任意の文字列
log # 文字列 log で終わる
)
|xg)
{
print "\1\n";
}
文字変換(Translate)
SYNTAX
tr/SRC/DST
$str = "abc";
$str =~ tr/abc/xyz/;
$str =~ tr/a-z/A-Z/;
c : Complement
d : Delete ( 検索リストの文字が変換リストになければ削除 )
s : 重複した場合 1 つにまとめる