in reply to Help with Best Practices for Module Paths when scripting across multiple machines
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."); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Help with Best Practices for Module Paths when scripting across multiple machines
by mwb613 (Beadle) on Nov 07, 2014 at 23:33 UTC | |
by RonW (Parson) on Nov 07, 2014 at 23:54 UTC |