in reply to Re: Aborting a module (return 1)
in thread Aborting a module

Like this? It seems to continue past the BEGIN block.
$ perl -wl use strict; BEGIN { return 1; } print "foo"; __END__ foo
--
Andreas

Replies are listed 'Best First'.
Re^3: Aborting a module (return 1)
by tye (Sage) on Oct 23, 2007 at 20:13 UTC

    Rereading the root node, the BEGIN was an example of a complicated way of using the module rather than code within the module. So the following should work fine:

    package My::Module; if( ... ) { # This module is useless in this case: return 1; } ... 1;

    Another possiblity is:

    package My::Module; if( ... ) { require My::Module::Internal; } 1;

    - tye        

      Yeah, the module in the middle method is the only clean way I can see. The if statement works but I also have to "use if" all the modules.

      Basically we have a module that we include everywhere to set up our environment, but we recently ran into a problem where we called someone else's Perl script from the module if a value wasn't set, which loaded our module, which called itself, which loaded our module.... etc etc etc *disaster*.

      So now we are trying to make it so that only our code calls it, even though it is set in PERL5OPT

                      - Ant
                      - Some of my best work - (1 2 3)

Re^3: Aborting a module (return 1)
by ikegami (Patriarch) on Oct 23, 2007 at 20:12 UTC

    Confirmed, it doesn't work from within BEGIN.

    >type M.pm package M; BEGIN { return 1; } print "Point A\n"; return 1; print "Point B\n"; 1; >perl -e "use M;" Point A