On Sun, Jan 13, 2002 at 10:04:58PM +0100, Mattia Barbon wrote: > > $ bleadperl -MO=-qq,Deparse foo.plx > > sub BEGIN { > > print "foo\n"; > > } > > print "bar\n"; > > > > If B::Deparse can save BEGIN blocks, B::C can. > > I didn't mean that I can't write code to make B::C save BEGIN blocks > ( it'd require <10 lines, probably ), I did mean that doing so would > not be a god idea: _I am > saving the state of the program after those blocks were ran_ and > they will be run _another time_ at runtime, and this is not correct: > ( for example use lib 'a'; would put 'a' into @INC twice, once > ( correctly ) at compile time, and another time ( incorrectly ) at > runtime ). In this > case this is not harmful, but you get the idea.
I don't understand. The compiled program should do exactly what the original program did. Anything else, as difficult as it may be, is a bug. Lots of programs and modules do important load-time checks and logic inside BEGIN blocks. Why would this: BEGIN { push @INC, 'foo'; } put 'foo' into @INC twice if it were compiled? The compiled program should not be storing the post-BEGIN value of @INC, it should store the original value at startup. -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One Me? A robot? That's rediculous! For one thing, that doesn't compute at all!