followed by a dot.
=end original
C<\Q> を使うことによって、正規表現中の C<.> は通常の文字として扱われるので、
C
は C の後にピリオドがあるものにマッチングします。
=head2 What is C really for?
X X
(C は実際なんのためのものなのですか?)
=begin original
(contributed by brian d foy)
=end original
(brian d foy によって寄贈されました)
=begin original
The C option for regular expressions (documented in L and
L) tells Perl to compile the regular expression only once.
This is only useful when the pattern contains a variable. Perls 5.6
and later handle this automatically if the pattern does not change.
=end original
正規表現の C オプション (L と L で文書化されています)
は、正規表現を一度だけコンパイルするように Perl に伝えます。
これはパターンに変数が含まれている場合にのみ有用です。
Perls 5.6 以降では、パターンが変わらない場合はこれを自動的に扱います。
=begin original
Since the match operator C, the substitution operator C,
and the regular expression quoting operator C are double-quotish
constructs, you can interpolate variables into the pattern. See the
answer to "How can I quote a variable to use in a regex?" for more
details.
=end original
マッチング演算子 C, 置換演算子 C, 正規表現クォート演算子
C はダブルクォート風構造なので、パターン中で変数を展開できます。
詳細については "How can I quote a variable to use in a regex?" の答えを
参照してください。
=begin original
This example takes a regular expression from the argument list and
prints the lines of input that match it:
=end original
この例は正規表現を引数リストから取って、それにマッチングする入力行を
表示します:
my $pattern = shift @ARGV;
while( <> ) {
print if m/$pattern/;
}
=begin original
Versions of Perl prior to 5.6 would recompile the regular expression
for each iteration, even if C<$pattern> had not changed. The C
would prevent this by telling Perl to compile the pattern the first
time, then reuse that for subsequent iterations:
=end original
バージョン 5.6 より前の Perl では、C<$pattern> に変更がなくても反復毎に
正規表現が再コンパイルされます。
C をつけると、パターンを初回にコンパイルし、引き続く反復では
再利用するように Perl に伝えることで、再コンパイルを防ぎます:
my $pattern = shift @ARGV;
while( <> ) {
print if m/$pattern/o; # useful for Perl < 5.6
}
=begin original
In versions 5.6 and later, Perl won't recompile the regular expression
if the variable hasn't changed, so you probably don't need the C
option. It doesn't hurt, but it doesn't help either. If you want any
version of Perl to compile the regular expression only once even if
the variable changes (thus, only using its initial value), you still
need the C.
=end original
バージョン 5.6 以降では、変数が変更されていない場合は Perl は正規表現を
再コンパイルしませんので、おそらく C は不要です。
害はもたらしませんが、助けにもなりません。
どのバージョンでも、たとえ変数の値が変わっても正規表現を一度だけ
コンパイルするようにしたい場合は、未だに C が必要です。
=begin original
You can watch Perl's regular expression engine at work to verify for
yourself if Perl is recompiling a regular expression. The C
modifier.
=end original
Perl 5.10 では、グローバルなペナルティなしに同じ作業をするための
3 つの特殊変数 C<${^MATCH}>, C<${^PREMATCH}>, C<${^POSTMATCH}> が
追加されました。
Perl 5.10 では、正規表現を C