I have the following code
print "Starting..\n";
eval { die "Before die sub redefinition\n" };
#die "Before die sub redefinition\n";
BEGIN {
print "inside Begin block\n";
*CORE::GLOBAL::die = sub {
my ($message) = @_;
print "Message: " . $message ."\n";
}
}
eval { die "Right after begin block\n" };
print "done\n";
Output is as below,
inside Begin block
Starting..
Message: Right after begin block
done
BEGIN block gets executed first before any other statement; however redefinition of CORE::Global::die is effective only after the redefinition. First die doesn't use the redefined version but the original. Could someone please help me figurr out the cause here?