【发布时间】:2012-08-09 08:27:40
【问题描述】:
根据 Carp 模块文档,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
【问题讨论】:
标签: perl