sid*_*com 3 perl operator-precedence associativity
在http://novosial.org/perl/one-liner/上,我找到了以下两个单行.输出是不同的,因为该unless语句不同于if !(由于关联性和优先级规则).
cat file: foo bar
perl -ne 'print unless /^$/../^$/' file foo bar
perl -ne 'print if ! /^$/../^$/' file foo bar
if !-statement 的不同行为如何使第二个单行输出成为空行?
正如链接文章所说,这是一个关联性和优先性的问题......
print unless /^$/../^$/ 相当于 print if !(/^$/../^$/)
print if ! /^$/../^$/ 相当于 print if (!/^$/)../^$/
请注意,第一个否定范围表达式,而第二个否定范围的开始条件,但不是范围本身.