Perl 错误处理全解析
1. 改变 die
的退出值
在 Perl 中,如果使用 die
而不是 exit
,Perl 会将 255 作为退出值。不过,我们可以通过 END
块来改变这个值。在 die
之后,Perl 进入 END
块时, $?
会保存 Perl 打算使用的退出值。如果发现这个值是 255,就可以将其设置为更有意义的值,示例代码如下:
END { $? = 37 if $? == 255 }
2. 特定操作系统的错误
在某些系统中,Perl 可以通过 $^E
变量提供更多错误信息。这些错误通常来自 Perl 外部,即使 Perl 使用外部库时未检测到问题,操作系统也可能设置自己的错误变量。
对于标准 Perl, $^E
的值通常与 $!
相同。但在 VMS、OS/2、Windows 或 MacPerl 系统中,可能会获得额外信息。平台特定的模块也可以使用 $^E
传递信息。
在 Windows 系统中, $^E
的值是 Win32::GetLastError()
的返回值。Win32 系列模块使用 $^E
传递错