Увеличьте многословность предупреждений 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);
Другие вопросы по тегам