Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re^2: Export from module in subdirectory

by tobyink (Abbot)
on Oct 11, 2012 at 12:56 UTC ( #998439=note: print w/replies, xml ) Need Help??

in reply to Re: Export from module in subdirectory
in thread Export from module in subdirectory

You're looking at it backwards. Don't decide on the code because of the filenames; decide on the filenames because of the code.

Choose a meaningful package name, like "Quux::Enhancer", and declare the package name in the module (somewhere near the top - the only things it makes sense to put before the package declaration are lexical pragma like use strict; use warnings; use 5.010;) using:

package Quux::Enhancer;

Now decide on which lib dir it's going to live inside. Often this will be a directory which is in perl's default @INC list. Within that directory create a subdirectory called Quux, and within that save your module as

Then in your script, if that lib dir is not in perl's default @INC, include this:

use lib '/path/to/lib'; ## not including 'Quux'!!

And then in the script load the module like this:

use Quux::Enhancer;

If you ever need to move the file, then that's fine; no need to change anything within the module; just make sure it's always called, and always kept in a directory called Quux. Then use lib to tell your Perl script where to find it.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^3: Export from module in subdirectory
by Don Coyote (Pilgrim) on Oct 11, 2012 at 13:24 UTC

    Thanks tobyink, this helps explain why I don't need to declare the package all the way back to some random path separator. I shall have to have a bit of a play around with some self constructed modules and directories. This should help me appreciate the way use is working, and some of the other replies in this thread.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998439]
choroba has worked for a Molecular Genetic Lab
[choroba]: also, Rosalind has nice explanations of the basic terms
[choroba]: but I've never used BioPerl, I processed all the stuff myself

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2017-08-17 09:40 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (285 votes). Check out past polls.