使用Perl编程时,我们应该能够处理两种不同的情况-
报告模块中的错误并引用模块的文件名和行号-这在调试模块时,或者在您特别想引发与模块相关而不是与脚本相关的错误时很有用。
报告引用呼叫者信息的模块中的错误,以便您可以调试脚本中导致错误的行。以这种方式引发的错误对于最终用户很有用,因为它们会突出显示与调用脚本的原始行有关的错误。
该警告和芯片的功能运作方式稍有不同,从一个模块中调用时,你会期望。例如,简单模块-
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { warn "模块错误!"; } 1;
当从如下脚本中调用时-
use T; function();
它将产生以下结果-
模块错误! at T.pm line 9.
这或多或少是您可能期望的,但不一定是您想要的。从模块程序员的角度来看,该信息很有用,因为它有助于指出模块本身中的错误。对于最终用户而言,所提供的信息是毫无用处的,而对于除了坚强的程序员以外的所有人而言,它都是毫无意义的。
此类问题的解决方案是Carp模块,该模块提供了一种简化的方法来报告返回有关调用脚本信息的模块内的错误。鲤鱼模块提供四个功能:鲤鱼,垂钓,鱼和悔。