Perl通常会抱怨实际错误,例如当变量只使用一次时:
use warnings; if ( 0 ) { } elsif ( $test ) { } # line 3 # Name "main::test" used only once: possible typo at testt.pl line 3.
这对于使用未初始化的$_的警告不起作用:
use warnings; if ( 0 ) { # line 2 } elsif ( chomp ) { } # Use of uninitialized value $_ in scalar chomp at testt.pl line 2. use warnings; if ( 0 ) { # line 2 } elsif ( m/test/ ) { } # Use of uninitialized value $_ in pattern match (m//) at testt.pl line 2.
是什么导致这个?这种行为何时有用?
解决方法
perldoc perl5101delta:
The line numbers for warnings inside
elsif are now correct.
请注意,此更改仅影响elsif;您仍会看到运行时错误/警告给出语句的开头或结尾行号而不是违规代码的实际行:
$perl use warnings; 0 ? do { } : $test ? do { } : do { }; 0 ? do { } : chomp() ? do { } : do { }; Name "main::test" used only once: possible typo at - line 3. # correct Use of uninitialized value $_ in scalar chomp at - line 8. # incorrect