use Errno qw(EINTR EIO :POSIX);
On Windows, "Errno" also defines and conditionally exports all the Winsock error constants defined in your system WinError.h include file. These are included in a second export tag, ":WINSOCK".
"Errno" also makes "%!" magic such that each element of "%!" has a non-zero value only if $! is set to that value. For example:
my $fh; unless (open($fh, "<", "/fangorn/spouse")) { if ($!{ENOENT}) { warn "Get a wife!\n"; } else { warn "This path is barred: $!"; } }
If a specified constant "EFOO" does not exist on the system, $!{EFOO} returns "". You may use "exists $!{EFOO}" to check whether the constant is available on the system.
Perl automatically loads "Errno" the first time you use "%!", so you don't need an explicit "use".
if (exists &Errno::EFOO) { $! = &Errno::EFOO; }