$ 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. |