This the basic approach I use to find a known location for a module subdir named for itself:
# used to find the location of THIS module. assumes that all support
# dirs will be under a directory named after this module (without
# the '.pm')
# NOTE! this is a class method that doesn't check the 'cached' value.
# YOU WILL BE SURPRISED if there has been an intervening chdir operati
+on!
# see the public 'basename_dir' method for normal use.
sub _basename_dir {
my $package = __PACKAGE__;
$package =~ s/::/\//g;
my $packpath = $INC{ join( '.', $package, 'pm' ) };
$packpath =~ s/\.pm$//;
my $realpath = Cwd::realpath($packpath);
return $realpath;
}
You will probably need to play with it a bit, but the general approach might helpful.
You must always remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.