0

重複の可能性:
Perl の変数のバックスラッシュによるテキスト置換

このコードが機能しなかったのはなぜですか?

my $foo = '\aa\bb';
my $bar = '\aa\bb\ee\ss.txt';

say $bar =~ m/^$foo.*$/ ? 'OK' : 'BAD';

スラッシュを使用しても問題ありません。

4

3 に答える 3

4

特別な文字を引用する必要があります。

これを使って:

say $bar =~ m/^\Q$foo\E.*$/ ? 'OK' : 'BAD';
             __^    __^

引用メタを見てください

于 2013-01-31T15:32:37.350 に答える
2

使用している

/^\aa\bb.*$/
  • \a「アラーム」文字に一致します。
  • \b単語境界に一致します。

特定の文字列に一致するパターンを生成したい。そのためには、 を使用できますquotemeta

my $pat = quotemeta($foo);
/^$pat.*$/

quotemetaを使って呼び出すこともできます\Q..\E

/^\Q$pat\E.*$/
于 2013-01-31T15:48:36.420 に答える