Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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.


Replies are listed 'Best First'.
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.
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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://920080]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2018-06-19 03:57 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (111 votes). Check out past polls.