[tpm] Detect a module's directory
J Z Tam
jztam at yahoo.com
Mon Feb 22 12:15:11 PST 2010
hey Madi,
During dev, under Windoze, I would invoke testApp.pl with:
1. Finding out which major rev of perl I am currently calling:
perl -V
1.1 But double check the eventual runner's path/shell/profile/mounts/permissions, and @INC
2. then, debug it: this would reveal the pathspec on Windows at runtime.
perl -d testLDAP.pl
2.1 For instance, to query the runtime location of 'which' Net::LDAP is being called at runtime, I n)ext through the debugging, and use the
'n' command,
until I hit the entry point into 'bind' in Net::LDAP
2.2 Once testLDAP.pl is About to interpret 'Net::LDAP::bind', method/call from Net::LDAP, I switch to the
's' command,
alias s)tep INTO the LDAP.pm::bind code.
The debugger shows the pathspec/\filespec/\lineNumber.
e.g.:
D:\home\itjdt\src\perl\ perl -d testLDAP.pl jordan
Loading DB routines from perl5db.pl version 1.3
Editor support available.
Enter h or `h h' for help, or `perldoc perldebug' for more help.
main::(testLDAP.pl:5): my $cn =$ARGV[0];
DB<1> n
main::(testLDAP.pl:6): my $ldap;
DB<1>
main::(testLDAP.pl:7): my $mesg;
DB<1>
main::(testLDAP.pl:8): my $entry;
DB<1>
main::(testLDAP.pl:9): my $pw;
DB<1>
main::(testLDAP.pl:12): my $shortid = $ENV{ USERNAME };
DB<1>
main::(testLDAP.pl:17): open(PASSFILE, "<$passfile");
DB<4> n
main::(testLDAP.pl:18): $pw = <PASSFILE>;
DB<4>
main::(testLDAP.pl:19): chomp($pw);
DB<4>
main::(testLDAP.pl:21): $ldap = Net::LDAP->new( 'domaincontroller001.foobar.com' ) or die "$@";
DB<4>
main::(testLDAP.pl:27): $mesg = $ldap->bind ( "$shortid\@foobar.com", password =>
"$pw", version =>3 ) ;
DB<4> s
Net::LDAP::bind(D:/Perl/site/lib/Net/LDAP.pm:332):
332: my $ldap = shift;
--- On Mon, 2/22/10, Digimer <linux at alteeve.com> wrote:
> From: Digimer <linux at alteeve.com>
> Subject: [tpm] Detect a module's directory
> To: "Toronto Perl Mongers" <tpm at to.pm.org>
> Received: Monday, February 22, 2010, 2:28 PM
> Hi all,
>
> Possibly stupid question time...
>
> Is there a reliable* way to detect or read the
> directory that a perl module is in? '$ENV{PWD}' returns the
> directory of the script loading the module, not of the
> module itself. My Google-fu is failing me as finding a
> solution, too.
>
> The reason I need this is that my core module reads
> in a configuration file from the root of the module's
> directory. I could hard-code it, but I would rather it be
> flexible in case it gets moved down the road.
>
> Thanks!
>
> Madi
>
> *Reliable in that it'd work when run from cron, work
> if/when the module is moved, etc.
> _______________________________________________
> toronto-pm mailing list
> toronto-pm at pm.org
> http://mail.pm.org/mailman/listinfo/toronto-pm
>
__________________________________________________________________
Ask a question on any topic and get answers from real people. Go to Yahoo! Answers and share what you know at http://ca.answers.yahoo.com
More information about the toronto-pm
mailing list