in reply to Re: Odd convention? (fall-back module in BEGIN block)
in thread Odd convention? (fall-back module in BEGIN block)

I created my own small example, and both use and require seem to work equally well.

I realize that use Foo; is equivalent to BEGIN { require Foo; Foo->import; }, and so using use ``adds one more level''... but it doesn't seem to make a difference in this case, does it?

  • Comment on Re^2: Odd convention? (fall-back module in BEGIN block)

Replies are listed 'Best First'.
Re^3: Odd convention? (fall-back module in BEGIN block)
by ikegami (Patriarch) on Feb 15, 2007 at 23:08 UTC

    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.