http://www.perlmonks.org?node_id=643668


in reply to Re: base.pm vs @ISA (typos)
in thread base.pm vs @ISA

For me, the major advantage of base.pm was that it originally would catch typos for you. Since use base qw( Food::Barf ); would die if there was no Food/Barf.pm to load (because the module's name is actually Foo::Bar).

That's interesting. I never knew base() ever did that. When did the functionality change?

Personally I like the current behaviour more - since I can switch between inline and file-based classes without having to change any code. A definite plus as far as I'm concerned.

Replies are listed 'Best First'.
Re^3: base.pm vs @ISA (typos)
by tye (Sage) on Oct 09, 2007 at 14:57 UTC

    There is little reason for the two features to be mutually exclusive.

    All that is needed is a better choice for when to not require and to not then also ignore if require fails.

    Also note that the behavior that several people have had problems with and that caused me to stop using the module (and that Schwern appeared to abandon trying to fix) is the one that forces people to add require even though they used base. So running into that problem would break your favorite feature.

    So the fixes I would make would prevent your pet feature from breaking.

    Also note that there are several pitfalls to putting multiple related classes into a single file (just a few days ago somebody at PerlMonks had exactly that problem) and base.pm as I would fix it would require that parent classes be defined before derived classes, which might catch some problems for some people but might be inconvenient for you.

    - tye