Error information specific to the current operating system. At the moment, this differs from "$!"
under only VMS, OS/2, and Win32 (and for MacPerl). On all other platforms, $^E
is always just the same as $!
.
Under VMS, $^E
provides the VMS status value from the last system error. This is more specific information about the last system error than that provided by $!
. This is particularly important when $!
is set to EVMSERR.
Under OS/2, $^E
is set to the error code of the last call to OS/2 API either via CRT, or directly from perl.
Under Win32, $^E
always returns the last error information reported by the Win32 call GetLastError()
which describes the last error from within the Win32 API. Most Win32-specific code will report errors via $^E
. ANSI C and Unix-like calls set errno
and so most portable Perl code will report errors via $!
.
Caveats mentioned in the description of "$!"
generally apply to $^E
, also.
This variable was added in Perl 5.003.
Mnemonic: Extra error explanation.