Следующий сценарий выйдет, когда одноранговый порт не прослушивает. Я не хочу, чтобы он существовал, а нужно продолжать. Я знаю, что «умереть» ниже приведет к этому, но есть лучший способ захватить ошибку без выхода.Как поймать ошибку, не выходя из скрипта?
my $socket = new IO::Socket::INET (
PeerHost => $properties{peer_host},
PeerPort => $properties{peer_port},
Proto => 'tcp',
);
die "cannot connect to the server $!\n" unless $socket;
while(1){
#send something to the port
}
Выход:
cannot connect to the server Connection refused
FYI, IO :: Socket :: INET хранит свои сбои конструкции в '$ @', _not_ в '$!'. Удивительно и [крайне не документировано с 5.18.0] (http://perldoc.perl.org/IO/Socket/INET.html), но верно. (Я думаю, что-то связанное с ETIMEDOUT, которое не существует во всех поддерживаемых системах). – pilcrow