Thanks for that correction. I didn't know nested BEGIN blocks execute in "reverse order". It seems completely unintuitive, illogical, and I don't like it but at least now I know :-)
update:
perl -e 'print "a"; BEGIN { print "b"; BEGIN { print "c" }}'