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'?你写的东西可以运行,但需要谨慎;除了NOTHING,你可能永远不会看到任何东西。特别是,你正在为每一行创建一个新的正则表达式 - 这可能不是你想要的。 –
@JonathanLeffler是的,创建新的正则表达式是我的主要目的是从文本文件中获取它。但它没有匹配任何东西,即使它应该。 – Joey
为什么它会匹配'驴'?正则表达式包含一个不在'$ items'字符串中的换行符,所以正则表达式永远不会匹配。即使你咬住了输入行,你也很少有'$ contents'匹配'donkey'。你可以键入'donkey'或'd..key'或类似的东西,但大多数情况下,运行的文本不会匹配'$ items'。如果你[写了一个寻找'驴'的原始'grep',那么你就有正则表达式:你需要'if($ contents =〜m/$ items /)'作为条件。你想要做什么的解释应该在问题中,以及简单的示例输入([MCVE]!)。 –