http://qs321.pair.com?node_id=77779


in reply to Re: Re (tilly) 3: No excuses about not using CGI.pm
in thread variables not posting?

It is silent for me in 5.005_03.

But try the following:

mysub(1); BEGIN { package Foo; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(mysub); sub mysub ($) { print "mysub: @_\n" }; } BEGIN { warn("About to import\n"); Foo->import(); warn("Imported\n"); }
I suspect that the warning comes when it imports and realizes that it has already parsed code whose meaning is being changed by the prototype. And the way I said that should go a long way to answering your question.

BEGIN blocks are executed once the BEGIN block is parsed. That means that they run before later code is parsed, and after prior code is already parsed. This is also why BEGIN blocks run in the order they appear in the file...