我想打印一行文件,如果它包含字符串A并且它不包含字符串B(在每个冒号处也分成新行)。什么是正确的语法?这是我尝试过的(我想要打印包含“bash”的行,但不打印包含数字的行):
my $file = passwdtest;
open(FH, "$file");
foreach (<FH>) {
print join("\n", split(/:/, "$_")) if ($_ =~ /bash/ and $_ != /\d+/);
};
close FH;
答案 0 :(得分:4)
$_ != /\d+/
是
的缩写 $_ != ($_ =~ /\d+/)
而不是!=
您需要!~
if ($_ =~ /bash/ and $_ !~ /\d+/);
答案 1 :(得分:0)
不只是:
if (/bash/ && ! /\d+/)