0
は、ここに私のコード正規表現を変数で照合することはできますか?
my $filename = 'text.log';
my $items = "donkey";
open(my $fh, '<:encoding(UTF-8)', $filename) or die "Cant open";
while (my $contents = <$fh>)
{
print "$contents";
if ($items =~m/$contents/)
{ print "Found $contents";}
else { print "NOTHING\n";}
}
あなたを行うとあなたは 'Found $ contents'を印刷すると思いますか?あなたが書いたものは動くことができますが、注意が必要です。あなたはおそらく何も見ていないでしょう。特に、各行に対して新しい正規表現を作成しています。これはおそらくあなたが意図するものではありません。 –
@JonathanLefflerええ、新しい正規表現を作成することは、テキストファイルからそれを取得する私の主な目的です。しかし、それは何かに合っていませんでした。 – Joey
なぜ「ろば」と一致するのですか?正規表現に '$ items'文字列にない改行が含まれているので、正規表現は決してマッチしません。入力行を圧縮しても、 'donkey'と一致する' $ contents'はほとんどありません。 'donkey'や 'd..key'などを入力することもできますが、実行中のテキストは' $ items'と一致しません。あなたが 'donkey'を探し回っているプリミティブ' grep'を書いているならば、正規表現を前に持っています。条件として 'if($ contents =〜m/$ items /)'が必要です。あなたがやろうとしていることの説明は、単純なサンプル入力([MCVE]!)とともに問題になるはずです。 –