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
$^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.
$^E is set to the error code of the last call to OS/2 API either via CRT, or directly from perl.
$^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. (Mnemonic: Extra error explanation.)
Also see "Error Indicators".