Carp モジュールのドキュメントによると、true と評価されcroak()
ない限り、スタック トレースを生成するべきではありません。$Carp::Verbose
しかし、何らかの理由で、croak()
常に私の環境のようconfess()
に動作します。つまり、スタックトレースを出力すべきでない場合でも常に出力します..
テストスクリプトは次のとおりです。
#!/usr/bin/perl
use Modern::Perl;
use Carp;
sub func
{
say "Carp::Verbose = $Carp::Verbose";
croak "There should be no stack trace after this message!";
}
sub main
{
func();
}
main;
そして、これが私のシステムで生成される結果です。
$ ./croak
Carp::Verbose = 0
There should be no stack trace after this message! at ./croak line 8
main::func() called at ./croak line 13
main::main() called at ./croak line 16
誰かがこの問題に遭遇したか、根本的な原因についての手がかりを持っているのでしょうか?
ここに私の環境に関するいくつかの情報があります:
Ubuntu 12.04 LTS
Linux 3.2.0-27-generic x86_64
perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi
また、SL6 システムでも同じように間違った動作をします。
Scientific Linux SL release 6.3 (Carbon)
kernel-2.6.32-279.1.1.el6.x86_64
perl, v5.10.1 (*) built for x86_64-linux-thread-multi