为什么perl会抱怨不同类型警告的不同行?

前端之家收集整理的这篇文章主要介绍了为什么perl会抱怨不同类型警告的不同行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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

猜你在找的Perl相关文章