Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Directory of PM file

by bart (Canon)
on Oct 12, 2005 at 10:20 UTC ( #499443=note: print w/replies, xml ) Need Help??


in reply to Directory of PM file

How can you get a handle on the directory that a module is located in from within that module's code?

Try __FILE__. See perldata, section "special literals". Drop the file's basename from that string, possibly using File::Basename.

A test revealed that this can produce a relative path; rel2abs() from File::Spec::Functions can remedy that.

For example, test module Foo.pm:

package Foo; use File::Spec::Functions qw(rel2abs); use File::Basename; my $dir = (fileparse(rel2abs(__FILE__)))[1]; print "Foo directory: $dir\n"; 1;

IMO it's safest to indeed set a variable with this directory in the top level of the module, as I do here, so it always gets set when the module is loaded.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2023-10-04 00:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?