Если вы предоставляете аргументы конструктору IO :: Socket, он требует аргумент Domain. Ознакомьтесь с полным исходным кодом здесь , в частности с подпрограммой configure, которая вызывается из конструктора, если вы предоставили аргументы.
sub new {
...
return scalar(%arg) ? $sock->configure(\%arg)
: $sock;
}
sub configure {
my($sock,$arg) = @_;
my $domain = delete $arg->{Domain};
croak 'IO::Socket: Cannot configure a generic socket' unless defined $domain;
....
}
Возможно, вы думаете о IO :: Socket :: INET?