On Sun, Jan 13, 2002 at 07:39:52PM +0100, Mattia Barbon wrote:
> > perlcc seems to be dropping BEGIN blocks entirely, that's the problem.
>
> No, that's correct. Explanation: if I have a module Foo
> ----
> package Foo;
>
> $x = 1;
> print "AAA";
>
> sub a { $x }
>
> 1;
> ----
> and a main program foo.pl
> ----
> BEGIN { # think use Foo;, expanded for clarity
> require Foo;
> }
>
> print Foo::a();
> ----
> perl -MO=C foo.pl
> calls B::C::compile _after_ it ran the BEGIN blocks; this means that the
> optree in Foo that initializes $x, and does "print AAA" has already been
> freed. So, even if B::C could save BEGIN blocks, this is not a good
> idea, for quite a lot of reasons.
$ bleadperl -MO=-qq,Deparse foo.plx
sub BEGIN {
print "foo\n";
}
print "bar\n";
If B::Deparse can save BEGIN blocks, B::C can.
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
I have this god-awful need to aquire useless crap!!!