5部 関数リファレンス

qr

2011年9月20日
qr/STRING/imosx

この演算子はSTRINGを正規表現としてクォートします (可能ならコンパイルします)。引数STRINGm/PATTERN/内のPATTERNと同様に文字変換されます。 ダブルクォーテーション( " )がデリミタとして使用された場合、文字変換は行われません。

簡単な使い方

# $patternの値を正規表現としてクォート
$re = qr/$pattern/;
# qrの返却値を利用してマッチング
$string =~ /$re/;

上記のように、qrの返却値はパターンマッチのサブパターンとして使えます。

Perlqr演算子を実行する際にパターンをコンパイルするので、qrを使うことでいくつかの場面で速度的に有利になります。特にqrの結果が独立して使われる場合に有利になります。

sub match {
my $patterns = shift;
# $patternsの値(複数)を一括して、正規表現としてクォート
my @compiled = map qr/$_/i, @$patterns;
grep {
my $success = 0;
foreach my $pat (@compiled) {
$success = 1, last if /$pat/;
}
$success;
} @_;
}

qrの時点でパターンを内部表現にプリコンパイルすることにより、 /$pat/ を試みる毎に毎回パターンを再コンパイルするのを避けることができます。

qr演算子のオプションは以下の通りです。

オプション 内容
i パターンマッチにおいて大文字小文字を区別しない
m 文字列を複数行として扱う
o 一度だけコンパイルする
s 文字列を一行として扱う
x 拡張正規表現を使う

Comment

コメントを残す

メールアドレスが公開されることはありません。

リズムファクトリーはホームページの制作会社です。
ホームページ制作に関するご要望・ご相談はこちらからどうぞ。