I wonder if we're making this more complicated than need be. As perlmod says END blocks are executed last in first out, so if you want your END block to be last to execute just make sure its defined first. That isn't too hard is it? Maybe a little ugly - I know I usually place my END blocks at the end of my script, not the top.
From the below proof it seems to me that DESTROY blocks of objects are executed ahead of END blocks. So if you declare your END block first(so as to be the last to execute) then you should have reasonable assurance that your exec call will be the last thing to execute.(after all DESTROY and other END blocks) Can anyone see any holes in this?
use strict;
use warnings;
my $blessed_junk = testIt->new();
print "Time to exit outa here...\n";
exit 0;
sub END
{
print "THE END!\n";
}
package testIt;
sub new
{
my $junk = {};
bless $junk;
return $junk;
}
sub DESTROY
{
print "I'm dying!\n";
}
and the output is:
Time to exit outa here...
I'm dying!
THE END!