Perl 中的 confess 函数类似于 cluck;它调用 die,然后打印一直到源脚本的堆栈跟踪。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "Error in module!"; } 1;当从如下所示的脚本调用时:use T; function();它将产生以下结果:Error in module! at T.pm line 9 T::function() called at test.pl line 4
Perl 中的 croak 函数等效于 die,只是它向上报告调用者一级。与 die 一样,此函数还在向 STDERR 报告错误后退出脚本:package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "Error in module!"; } 1;当从如下所示的脚本调用时:use T; function();它将产生以下结果:Error in module! at test.pl line 4与 carp 一样,关于根据 warn 和 die 函数包含行和文件信息的相同基本规则适用。
Perl 中的 cluck 函数是一种增强的 carp,它遵循相同的基本原理,但也打印导致调用该函数的所有模块的堆栈跟踪,包括原始脚本的信息。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "Error in module!"; } 1;当从如下所示的脚本调用时:use T; function();它将产生以下结果:Error in module! at T.pm line 9 T::function() called at test.pl line 4
Perl 中的 carp 函数是 warn 的基本等效项,它将消息打印到 STDERR,而不会实际退出脚本并打印脚本名称。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "Error in module!"; } 1;当从如下所示的脚本调用时:use T; function();它将产生以下结果:Error in module! at test.pl line 4