Увеличьте детализацию предупреждений Perl - PullRequest
3 голосов
/ 23 июня 2011

Есть ли способ увеличить многословность предупреждений в Perl? Я использую это для генерации предупреждений.

#!/usr/bin/perl -w

Меня особенно интересует то, что я иногда бью. Есть ли в любом случае Perl может напечатать имя неинициализированной переменной?

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

Ответы [ 3 ]

9 голосов
/ 23 июня 2011

Он попытается, если вы обновитесь до Perl 5.10 или новее. Текущий 5.14.

2 голосов
/ 23 июня 2011

Как говорит Фридо, похоже, у вас более старая версия 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);
2 голосов
/ 23 июня 2011
#!/usr/bin/perl
use diagnostics;
#or
#use diagnostics -verbose;

это даст вам больше информации!
http://perldoc.perl.org/diagnostics.html

...