Вы видите «Неверный аргумент», потому что конструктор пытается разрешить имя хоста, получает ошибку и возвращает EINVAL
в $!
. Если вы используете IP-адрес в $host
, вы увидите настоящую ошибку «Сеть недоступна».
Кроме того, IO::Socket::INET
устанавливает $@
для определения ошибки, возвращенной в $!
, поэтому, если вы напечатаете $@
, а также $!
, вы увидите "Bad hostname 'google.com'", который Вероятно, это даже лучшая диагностика, чем "Недоступная сеть", которую вы получите с IP-адресом вместо имени хоста. В обоих случаях должно быть сразу ясно, что происходит.