Perl uses @INC to find modules, so a module should be able to use @INC to find itself.
For a program to find itself, examining the value of $0 in the context of (a) the current working directory and (b)the value of $ENV{PATH}, might locate the running program.
Update: Added sample code.
use warnings; use strict; package My::Mod; use File::Spec; use Carp; my $module = File::Spec->catfile(split('::', __PACKAGE__)); my $modPath; for (@INC) { my $t = File::Spec->catfile($_, $module); if ( -e $t ) { $modPath = $t; last; } } my $configPath = $modPath; if ($modPath) { $configPath =~ s/\.pm$/.yml/; } else { croak("Can't find config file."); }
In reply to Re: Help with Best Practices for Module Paths when scripting across multiple machines
by RonW
in thread Help with Best Practices for Module Paths when scripting across multiple machines
by mwb613
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |