http://www.perlmonks.org?node_id=713608


in reply to who am I?

I have a very closely related question - close enough to post here, I think:

How can a module determine the location of itself, independently of the CWD, and independently of the location of the script that is using it.

Eg. if the module is ~/lib/Ingenious.pm, and the script using it is ~/apps/Handy/Process.pl, and the CWD is ~/data/stuff/, then how could Ingenious.pm best determine that it's in ~/lib/ ?

After a bit of head scratching, I cobbled together a generic enough "solution":

foreach (@INC) { if (-f "$_/".__PACKAGE__.".pm") { $iAmHere = $_; last; } }
This finds the location of the module either absolutely, or relative to the CWD, according to the content of @INC, which is sufficient for my purposes.

It feels like a hack, but hey - I wrote it before I found PerlMonks, so now seems like a good time to ask whether there's a better way of doing it. Any thoughts?

--
.sig : File not found.