in reply to Re^2: send: Cannot determine peer address at ./toritv.pl line 183
in thread send: Cannot determine peer address at ./toritv.pl line 183

Looking into IO::Socket at http://search.cpan.org/src/GBARR/IO-1.2301/IO/Socket.pm reveals:

sub send { @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]] +)'; my $sock = $_[0]; my $flags = $_[2] || 0; my $peer = $_[3] || $sock->peername; croak 'send: Cannot determine peer address' unless($peer);

So you have to take care that either peername is initialized on object creation, or provided the peer address as a third argument to send().

Replies are listed 'Best First'.
Re^4: send: Cannot determine peer address at ./toritv.pl line 183
by targetsmart (Curate) on Jan 03, 2009 at 06:35 UTC
    In my case the same error 'send: Cannot determine peer address' arised, but it is because when program A is trying to send(IO::socket) data on socket (program B is connected to the other end) and the program B has just exited abnormally.
    I have already trapped the PIPE signal in program A, but in this case I am not even receiving PIPE signal,(thinking that I am using write).
    Later while seeing this IO::Socket::send, i found that when that error is croaked, the write even is not attempted, so I just checked whether the peer is defined or not, before calling IO::Socket::send.
    I presume in other cases(such as plain write) we may receive SIGPIPE.