in reply to Sockets, eval , and DIE

You're talking about signals here, not regular error conditions within a single program. Writing to a closed pipe gets you a SIGPIPE signal.

If you want to survive a signal, you need a signal handler for that signal. In perldoc you're wanting the perlipc section. There's a perldoc.perl.org page for perlipc or run perldoc perlipc locally.

Replies are listed 'Best First'.
Re^2: Sockets, eval , and DIE
by Wiggins (Hermit) on Apr 17, 2014 at 17:45 UTC
    BINGO !!
    SIGPIPE="IGNORE" allowed the code to continue. Now to wrestle with "Don't test for what you aren't prepared to handle!"

    It is always better to have seen your target for yourself, rather than depend upon someone else's description.

      Alternatively, one can use "send" instead of "syswrite". Like this

      use Socket qw(MSG_NOSIGNAL); use Errno; my $out = send($sock, $data, MSG_NOSIGNAL); unless(defined $out) { if($!{EPIPE}) { warn("Got broken pipe\n"); } }
      In this case SIGPIPE is not provided, only EPIPE system error happens, which allows handling of all errors in single place.