我有以下代码。我试图在我的日志文件中找到3个单词的匹配,如果找到匹配则打印该行(仅当所有3个单词都存在时)。如果我对单词(@typedefs
)进行硬编码,它可以正常工作,但如果我在带有字符串(@typedefs_new
)的数组中使用相同的单词,则它不起作用。我在做什么错误?
my $str1="laa";
my $str2="faa";
my $str3="baa";
my @typedefs = qw(laa,faa,baa);
my @typedefs_new = ($str1,$str2,$str3);
my $file="/pathtofile/logfile.log";
open (FILE, $file) or die $!;
print "Output using typdefs_new array\n";
while ( my $line = <FILE> ) {
if ( any { $line =~ /$_/ } @typedefs_new ) {
print $line;
}
}
print "Output using typdefs array\n";
while ( my $line = <FILE> ) {
if ( any { $line =~ /$_/ } @typedefs ) {
print $line;
}
}
LOGFILE.LOG:
laa ferg gerg faa rgrebf baa abc def
fber rgreg rgre greg bgbg rghgr grhr
输出:
Output using typedefs_new array
laa ferg gerg faa rgrebf baa abc def
fber rgreg rgre greg bgbg rghgr grhr
Output using typedefs array
laa ferg gerg faa rgrebf baa abc def
答案 0 :(得分:8)
qw()
按空格分隔单词,而不是用逗号分隔单词。所以,你的代码相当于
my @typedefs = ( 'laa,faa,baa' );
warnings应该告诉你:
Possible attempt to separate words with commas