setsockopt ... or die Fudge("SO_SNDTIMEO"); setsockopt ... or die Fudge("SO_RCVTIMEO"); sub Fudge { use Errno(); join qq/\n/, "Error @_", map { " $_" } int( $! ) . q/ / . $!, int( $^E ) . q/ / . $^E, grep( { $!{$_} } keys %! ), q/ /; }