in reply to Re^2: Odd convention? (fall-back module in BEGIN block)
in thread Odd convention? (fall-back module in BEGIN block)
It can make a difference depending on what's in "...".
Compare
BEGIN { eval 'sub foo { return 2 }'; } my $i = foo 3; # my $i = 2; print("$i\n");
with
eval 'sub foo { return 2 }'; my $i = foo 3; # Syntax error! print("$i\n");
Compare
BEGIN { eval 'sub foo(\@) { print(@{$_[0]}, "\n"); }'; } my @a = qw( foo bar ); foo(@a); # foobar
with
eval 'sub foo(\@) { print(@{$_[0]}, "\n"); }'; my @a = qw( foo bar ); foo(@a); # [undef]
Compare
BEGIN { eval 'sub foo { print("foo\n"); }'; } BEGIN { foo(); } # foo
with
eval 'sub foo { print("foo\n"); }'; BEGIN { foo(); } # Dies. Can't find foo()
etc.
|
|---|