Perl中的!~是什么意思?

3
有人能解释一下这行代码的含义吗?
elsif ($ARGV[0] !~ /^\d+$/

完整的代码如下,原本是用来输出输入内容的。
if (@ARGV != 2) {
    print "Usage: ./echon.pl <number of lines> <string>\n";
    exit;
} elsif ($ARGV[0] !~ /^\d+$/) {
    print "./echon.pl: argument 1 must be a non-negative integer\n";
    exit;
}

$i=0;
while ($i < $ARGV[0]) {#print argv[1] for argv[0] - 1 times
    print "$ARGV[1]\n";
    $i++;
}

https://perldoc.pl/perlop#Binding-Operators - melpomene
1个回答

5

!~是绑定操作符=~的否定形式,就像!===运算符的否定形式。

该表达式

$foo !~ /bar/

等价于, 但更为简洁且有时更具表现力,比表达式更好。

!($foo =~ /bar/)

1
当然,=〜 告诉下一个 m//s///tr/// 运算符要搜索和可能转换的字符串。 - ikegami
重要的是要记住,m/s/tr是定义行为的运算符,=~!~只是指定它们应该应用于除$_之外的其他东西。/foo/只是m/foo/,如果您使用=~绑定到右侧不是这些运算符之一的东西,它会被字符串化并用于匹配,就像使用m//一样。 - Grinnz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接