相关疑难解决方法(0)

由于某种原因无法在 Carp::croak() 中禁用堆栈跟踪

根据 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;
Run Code Online (Sandbox Code Playgroud)

这是它在我的系统上产生的结果:

$ ./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
Run Code Online (Sandbox Code Playgroud)

也许有人遇到过这个问题或对根本原因有任何线索?

以下是有关我的环境的一些信息:

Ubuntu 12.04 LTS
Linux 3.2.0-27-generic x86_64 …
Run Code Online (Sandbox Code Playgroud)

perl

5
推荐指数
1
解决办法
637
查看次数

标签 统计

perl ×1