增加Perl警告的详细程度

时间:2011-06-22 21:45:07

标签: perl warnings verbosity

有没有办法增加Perl警告的冗长程度? 我用它来生成警告。

#!/usr/bin/perl -w

我对偶尔遇到的以下内容特别感兴趣。无论如何,Perl可以打印未初始化变量的名称吗?

Use of uninitialized value in printf at ./script.pl line 106, <LOG> line 323805.

3 个答案:

答案 0 :(得分:9)

如果您升级到Perl 5.10或更高版本,它将尝试。 5.14是最新的。

答案 1 :(得分:2)

#!/usr/bin/perl
use diagnostics;
#or
#use diagnostics -verbose;

这将为您提供更多信息!
http://perldoc.perl.org/diagnostics.html

答案 2 :(得分:2)

正如弗鲁多所说,听起来你有一个较旧的perl版本。但是,使用print进行调试相当简单,并且需要注意一个好的“低技术”技术。如果你有一行如:

printf "%-10s %-10s %s %s", $var1, $var2, @array;

你得到的警告很难放到任何一个变量上,你总是可以把它拆开:

printf "%-10s ", $var1;
printf "%-10s ", $var2;
printf "%s %s", @array;

然后你会得到一个更具体的警告。

或者你可以获得一些创意,并且做:

sub no_undef {
    my @return;
    push @return, map { defined $_ || "undef" } @_;
    return @return;
}
printf "%-10s %-10s %s %s", no_undef($var1, $var2, @array);