除非 - 和"if!"的不同行为如何?语句在标量上下文中影响范围运算符?

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 的不同行为如何使第二个单行输出成为空行?

Dav*_*man 6

正如链接文章所说,这是一个关联性和优先性的问题......

print unless /^$/../^$/ 相当于 print if !(/^$/../^$/)

print if ! /^$/../^$/ 相当于 print if (!/^$/)../^$/

请注意,第一个否定范围表达式,而第二个否定范围的开始条件,但不是范围本身.