私はどちらも、マッチパターンで 'リテラル'として使用する必要があるメタキャラクタでいっぱいです。 \Q
は、文字列内のすべてのメタ文字を\E
まで引用すると仮定していますが、動作しません。Perl、パターンマッチングとメタキャラクタ
どういう意味ですか?あなたは$ww[0]
の1に$prev
の文字列を比較したいように見えますif (/\Q$prev\E/ !~ /\Q$ww[0]\E/) {
私はどちらも、マッチパターンで 'リテラル'として使用する必要があるメタキャラクタでいっぱいです。 \Q
は、文字列内のすべてのメタ文字を\E
まで引用すると仮定していますが、動作しません。Perl、パターンマッチングとメタキャラクタ
どういう意味ですか?あなたは$ww[0]
の1に$prev
の文字列を比較したいように見えますif (/\Q$prev\E/ !~ /\Q$ww[0]\E/) {
:
これは私に迷惑を与える行です。この場合、正規表現マッチは次のようになります。メタ文字を無視して、www[0]
にあるものと同じではありません1
$prev
場合
$result = $prev !~ /\Q$ww[0]\E/
$result
が返されます。それはあなたがやってみたかったのすべてである場合
しかし、あなたにもne
を使用する場合があります。
if ($prev ne $ww[0]){
#do this if $prev and $ww[0] are not the same
}
、@toolicが述べたように、スクリプトの先頭に次の行を追加します。
use warnings;
これは、スクリプトで発生する可能性のある問題に関するフィードバックを提供します。不在
お世話になりました!私はいつものように事を複雑にしていた。 ($ prev ne $ ww [0])はうまくいきました。 – user1238319
=~
又は!~
の使用は、
/.../
よう
/\Q$prev\E/ !~ /\Q$ww[0]\E/
が
($_ =~ /\Q$prev\E/) !~ /\Q$ww[0]\E/
0123のための短い
$_ =~ m/.../
ための短いです
"" !~ /\Q$ww[0]\E/
"1" !~ /\Q$ww[0]\E/
あなたは単にたい:左の正規表現のマッチが成功したかどうかに応じて、次のいずれかに相当します
$prev !~ /\Q$ww[0]\E/ # $ww[0] doesn't contains $prev
あなたが実際にしたい場合
$prev !~ /^\Q$ww[0]\E\z/ # $ww[0] isn't equal to $prev
次に簡単にすることができます
$prev ne $ww[0] # $ww[0] isn't equal to $prev
ところで、常にuse strict; use warnings;
を使用してください。ここで問題を特定している可能性があります(必ずしもそうではありませんが、値は$_
)。
このような2つの正規表現を比較することはできません。より多くのコードを投稿して、何をしようとしているのかを明確にすることができますか? – MattLBeck
「うまくいかない」とはどういう意味ですか?あなたは '$ prev'と' $ ww [0] 'を補間したいのですか?そうではありませんか? – reinierpost
http:// perldocを使用してください。perl.org/warnings.html。 – toolic