in reply to Trapping socket error in client when server goes away

Trap sigpipe in your eval...
eval { local $SIG{PIPE} = sub {die "SIGPIPE" }; print $socket "Client msg\n"; }; warn "lost server $@\n" if $@;