Perl 中有各种全局特殊变量。我们已根据其用法和性质将它们列在不同的块中:全局数组特殊变量@ARGV包含用于脚本的命令行参数的数组。@INC包含要查找 Perl 脚本以由 do、require 或 use 结构进行评估的位置列表的数组。@F当给出 -a 命令行开关时,输入行被分割到的数组。全局哈希特殊变量%INC包含每个已通过 do 或 require 包含的文件的文件名的条目。%ENV包含您当前环境的哈希。%SIG用于设置信号的哈希…… 阅读更多
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