my $saved_value; END { $? = $saved_value } # this will be the final END block #### your program goes here #### using whatever modules you want END { $saved_value = $? # } # this will be the first END block #### sub my_exit { my $value = shift; $saved_value = $value; exit $value; }