Fingo has asked for the wisdom of the Perl Monks concerning the following question:

I am writinga module for my use, and if I just leave a 1; as the last line, everything works fine. If I however use an END block
END { 1; }
it does not return true. What's wrong?

Replies are listed 'Best First'.
Re: END in packages
by rchiav (Deacon) on Aug 26, 2001 at 04:16 UTC
    END is for the module cleanup code. Your module must return true, hence the 1. END is basically a destructor, and won't be returned the same as the last line of the file.

    You might want to read perlmod

    Hope this helps..

Re: END in packages
by John M. Dlugosz (Monsignor) on Aug 26, 2001 at 04:37 UTC
    The loader cares about the last statement executed, and that will be the main-line code. The creation of a sub, even a special one like END, doesn't cause the contents of that sub to be run--your 1 is not seen 'till it's called. END is not called when a module is loaded, but when it's terminated.

    In a related thread, the idea of using return 1; at the end of the module was raised, as being clearer.

      But stylistically something has to be said for ending with:
      "Just another Perl hacker,\n";
        True enough (Pun intended).