Рассмотрим следующий фрагмент Perl-скрипта:
use IO::Socket;
# ...
my $sock = IO::Socket::INET->new(
PeerAddr => $host, # e.g. "google.com"
PeerPort => $port, # e.g. 80
Proto => 'tcp'
);
die("no socket: $!") unless $sock;
# ...
В нормальных условиях все работает, как и ожидалось, но когда интернет-соединение хост-системы неактивно, переменная «sock» пуста, а $!
имеет сообщение «Недопустимый аргумент».
Я неправильно использую конструктор INET или это ожидаемое поведение? Если последнее, есть ли способ отличить ошибку «неактивный сетевой интерфейс» от подлинного недопустимого аргумента метода конструктора?
$^E
отличного от$!
для этой ошибки. - person maerics   schedule 23.05.2011