Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Module mechanics question

by armstd (Friar)
on Aug 12, 2011 at 19:49 UTC ( #920080=note: print w/ replies, xml ) Need Help??


in reply to Module mechanics question

If foo wants to use Modern::Perl, then foo better 'use Modern::Perl;' (or require...). If foo isa bar, and bar uses Modern::Perl, then it's merely a coincidence that foo can access Modern::Perl, and must not be depended upon. Same goes for export/import. If bar imports everything from Modern::Perl, and re-exports it, then foo imports everything from bar, then foo is still using bar, and should not assume anything about Modern::Perl.

If you code all of your dependencies into bar, and then restructure foo not to use bar, foo breaks. You'll have to sift through it all and figure out what foo really used that bar magically provided. Magic is bad. @EXPORT is bad for similar reasons... not explicitly specifying what symbols come from where in every package leads to lots of guesswork for future maintainers, and guesswork leads to bugs.

--Dave


Comment on Re: Module mechanics question
Re^2: Module mechanics question
by Logicus on Aug 12, 2011 at 20:32 UTC
    No worries I actively want to enforce the use of "bar" and because of it Modern::Perl, strict and so on, onto folks I'll employ to write packages like "foo" for me.
Re^2: Module mechanics question
by yitzchak (Sexton) on Aug 12, 2011 at 23:51 UTC
    I think you've misunderstood what Modern::Perl is. It's basically a pragma equivalent to use strict, use warnings, and a couple other "modern" things, all lexically scoped. So if foo isa bar and bar uses Modern::Perl, there is no effect on foo. But the question is how to make your own "pragma" that does what Modern::Perl does, presumably plus some other things.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://920080]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (19)
As of 2014-09-19 19:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (144 votes), past polls