|Think about Loose Coupling|
base.pm vs @ISAby jettero (Monsignor)
|on Oct 08, 2007 at 02:47 UTC||Need Help??|
A few months ago, a certain monk talked me out of using base (and apparently took it to the next level) with a few well placed backhanded comments about what it does and doesn't do. I had been using it religiously since I liked the feel of use base 'Module::Name'; and never much thought about it beyond that.
He pointed out that one of the things it claims to do (load the module if it's not there) frequently doesn't work correctly. In fact, in the places I used it, I had habitually loaded most modules I base.pm-ed by hand, without realizing that I was working around a pseudo-bug.
He also pointed out that push @ISA, qw(Module::Name) is probably just as clear. That's arguable I suppose, but I was convinced. I didn't need anything else base.pm was doing (since I don't even know what fields are for) and I quit using it.
I mentioned this on an IRC channel and discovered that most people really really like base.pm (mostly for readability I gather) and so I got to wondering...
Do you like base.pm? Why? Do you prefer to @ISA = qw(name)? Why?
(Again, personally, I do not find @ISA to be particularly unreadable (especially when, below it, I usually use other "unreadable" things like $_ and (stat _)). So I just use @ISA.)