3

Perl で警告の冗長性を高める方法はありますか? これを使用して警告を生成します。

#!/usr/bin/perl -w

たまに叩く下記が特に気になります。Perl が初期化されていない変数の名前を出力できる方法はありますか?

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

3 に答える 3

9

Perl 5.10 以降にアップグレードすると、これが試行されます。5.14 が最新です。

于 2011-06-22T21:48:47.700 に答える
2

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);
于 2011-06-22T22:32:53.970 に答える
2
#!/usr/bin/perl
use diagnostics;
#or
#use diagnostics -verbose;

これにより、より多くの情報が得られます。
http://perldoc.perl.org/diagnostics.html

于 2011-06-22T21:55:58.900 に答える