# here the die runs in the child: nph>perl -MIPC::Open3 -le'print "dad: $$";eval {$pid = open3(*IN, *OUT, *ERR, @ARGV);}; die "$$ ACK $@\n" if ($@);print ' nosuch dad: 62718 55596 ACK open3: exec of nosuch failed at -e line 1 # yet here in the same code it runs in the parent !!! nph>perl -MIPC::Open3 -le'print "dad: $$";eval {$pid = open3(*IN, *OUT, *ERR, @ARGV);}; die "$$ ACK $@\n" if ($@);print ' dad: 25600 25600 ACK open3(*main::IN, *main::OUT, *main::ERR): not enough arguments at -e line 1 # and if I remove the print I alter the behaviour again nph>perl -MIPC::Open3 -le'print "dad: $$";eval {$pid = open3(*IN, *OUT, *ERR, @ARGV);}; die "$$ ACK $@\n" if ($@);print "moo" ' nosuch dad: 55592 moo nph>