2

如果文件包含字符串 A 并且不包含字符串 B(也在每个冒号处拆分为换行符),我想打印一行文件。什么是正确的语法?这是我尝试过的(我希望它打印包含“bash”的行但不打印包含数字的行):

my $file = passwdtest;
open(FH, "$file"); 
foreach (<FH>) { 
print join("\n", split(/:/, "$_")) if ($_ =~ /bash/ and $_ != /\d+/);
};

close FH;
4

2 回答 2

4
 $_ != /\d+/

简称

 $_ != ($_ =~ /\d+/)

而不是!=你需要!~

if ($_ =~ /bash/ and $_ !~ /\d+/);
于 2013-10-29T19:20:03.427 回答
0

不就是这样吗:

if (/bash/ && ! /\d+/)
于 2013-10-30T10:18:01.407 回答