申し訳ありませんが、「ProgrammingPerl」の本からのかなり複雑なスニペットを理解するためにもう一度助けが必要です。ここにあります(太字でマークされている私にはわかりにくいものです):
パターンは二重引用符で囲まれた文字列のように解析され、変数の補間(区切り文字として一重引用符を使用しない限り)やバックスラッシュエスケープで示される特殊文字など、通常の二重引用符の規則はすべて機能します。これらは、文字列が正規表現として解釈される前に適用されます(これは、文字列が複数回処理されるPerl言語の数少ない場所の1つです)。..。
この2パス解析の別の結果は、通常のPerlトークン作成者が、通常の文字列の終了区切り文字を探しているかのように、正規表現の終わりを最初に見つけることです。文字列の終わりを検出した後(および変数の補間を実行した後)にのみ、パターンは正規表現として扱われます。特に、これは、正規表現構造内のパターンの終了区切り文字を「非表示」にできないことを意味します(括弧で囲まれた文字クラスや、まだ説明していない正規表現コメントなど)。Perlはどこにいても区切り文字を確認し、その時点でパターンを終了します。
まず、前に述べたように、なぜそれが見てOnly after it has found the end of the string
いなかったと言わthe end of the regular expression
れるのですか?
第二に、それはどういう意味you can’t “hide” the terminating delimiter of a pattern inside a regex construct
ですか?終了区切り文字を非表示にできないのに、正規表現または補間変数(がなくても)/
のどこにでも配置できるのはなぜですか。/A\/C/
\
my $s = 'A/';
my $p = 'A/C';
say $p =~ /$s/;
出力1
。
質問を書いたり読み直したりしているときに、このスニペットは正規表現の区切り文字として一重引用符を使用することを示していると思いましたが、すべてが非常にまとまりがあるように見えます。私の仮定は正しいですか?
感謝します。