Увеличьте многословность предупреждений Perl
Есть ли способ увеличить многословность предупреждений в Perl? Я использую это, чтобы генерировать предупреждения.
#!/usr/bin/perl -w
Я особенно заинтересован в следующем, что я иногда ударил. Есть ли в любом случае Perl может печатать имя неинициализированной переменной?
Use of uninitialized value in printf at ./script.pl line 106, <LOG> line 323805.
3 ответа
Он попытается, если вы обновитесь до Perl 5.10 или новее. 5.14 актуально.
#!/usr/bin/perl
use diagnostics;
#or
#use diagnostics -verbose;
это даст вам больше информации!
http://perldoc.perl.org/diagnostics.html
Как говорит Фридо, похоже, у вас есть более старая версия 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);