【发布时间】:2011-09-20 18:34:55
【问题描述】:
有没有办法增加 Perl 中警告的详细程度? 我用它来生成警告。
#!/usr/bin/perl -w
我对我偶尔点击的以下内容特别感兴趣。 Perl 是否可以打印未初始化变量的名称?
Use of uninitialized value in printf at ./script.pl line 106, <LOG> line 323805.
【问题讨论】:
有没有办法增加 Perl 中警告的详细程度? 我用它来生成警告。
#!/usr/bin/perl -w
我对我偶尔点击的以下内容特别感兴趣。 Perl 是否可以打印未初始化变量的名称?
Use of uninitialized value in printf at ./script.pl line 106, <LOG> line 323805.
【问题讨论】:
如果您升级到 Perl 5.10 或更高版本,它将尝试。 5.14 是当前版本。
【讨论】:
#!/usr/bin/perl
use diagnostics;
#or
#use diagnostics -verbose;
这将为您提供更多信息!
http://perldoc.perl.org/diagnostics.html
【讨论】:
正如friedo 所说,听起来您的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);
【讨论】: