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;
}