in reply to getting a Message from Net::YMSG

Hi. I've never used this module before, but that error you're getting is the stringified form of EINPROGRESS. I looked at line 344 of YMSG.pm and found this:

my $server = IO::Socket::INET->new( PeerAddr => $self->{hostname}, PeerPort => $self->get_port, Proto => 'tcp', Timeout => 30, ) or die $!;

The IO::Socket modules store error messages in $@, unfortunately. Try changing $! to $@ on that last line to find out why your script is really failing.

Keep in mind that it's perfectly normal for an operation (such as connect()) to return EINPROGRESS under non-blocking IO. If you supply a 'Timeout' value to IO::Socket::INET->new()--as the code above does--IO::Socket sets the socket to non-blocking mode, calls connect(), and connect() returns immediately, setting $! to EINPROGRESS. It then polls the socket continuously, waiting for it to become writable. If this doesn't happen within the allotted time specified by 'Timeout', it returns undef, setting $@ to "connect: timeout", which is probably the error you're dealing with.