ある文字列が正規表現パターンにマッチするかを調べるには m//
演算子を使用します。
m//
演算子は、デフォルトで $_
に格納されたテキストの内容とマッチング処理を行います。
$_ = 'You can do it.';
if (m/can/) {
print "Found!\n";
}
パターンの前後を囲むデリミタは、一般的にはスラッシュ (/
) が使用されますが、下記のようにスラッシュ以外の記号を使用することができます(このあたりの柔軟性は qw//
演算子と同様です)。
m!pattern!
m?pattern?
m#pattern#
m<pattern>
m{pattern}
スラッシュをデリミタに使用する場合は、プレフィックスの m
を省略することができます。
このショートカット記法を使うため、多くの人はスラッシュをデリミタとして使います。
$_ = 'hogehoge';
if (/pattern/) {
...
}
$_
以外の任意の文字列変数とマッチングさせるには、結合演算子 (binding operator) と呼ばれる =~
を使います。
my $line = 'hogehoge';
if ($line =~ /pattern/) {
...
}
マッチングの結果の真偽値を、変数に保存しておくこともできます。
my $is_matched = /pattern/;
my $is_matched = $line =~ /pattern/;
my $is_matched = <STDIN> =~ /pattern/;