in reply to bad die behaviour?

Doing

$ perl -e 'sub {die}'

is just setting up an anonymous subroutine in void context then exiting with a normal termination status because it never actually dies. Note the following

$ perl -e '$sub = sub {die}; $sub->();' Died at -e line 1. $ echo $? 255 $

Cheers,

JohnGG

Update: To test behaviour in a script rather than on the command line.

use strict; use warnings; sub toDieFor { my $v = shift; die qq{Died with $v}; } my $value = shift; toDieFor($value) if $value > 10; print qq{Normal termination\n};

Running this a couple of times

$ spw638035 3 Normal termination $ spw638035 33 Died with 33 at spw638035 line 9. $ echo $? 255 $

Perhaps you could shows us an actual code sample that triggers the behaviour you describe.