Как получить доступ к подкаталогам (t, scripts) в корневом каталоге установки моего модуля? - PullRequest
0 голосов
/ 18 июня 2010

Модуль Foo :: Bar был установлен где-то в @INC.

Кроме рекурсивной проверки @INC для Foo, затем Bar, затем scripts или t, этоесть способ доступа к этим каталогам из самого модуля ?

Например, я бы хотел вызвать конкретный скрипт в lib/scripts/findmeifyoucan.pl из Foo/Bar.pm.

1 Ответ

2 голосов
/ 18 июня 2010

Вы можете найти его относительно соответствующего кода, используя %INC, чтобы найти, где находится соответствующий код:

package Foo::Bar;
# this code lives in ...something.../lib/Foo/Bar.pm

package Unrelated;

use File::Spec;
use Foo::Bar;

my $filename = 'Foo/Bar.pm';
(my $libpath = $INC{$filename}) =~ s#/\Q$filename\E$##g; ## strip / and filename
my $script = File::Spec->catfile($libpath, qw(scripts findmeifyoucan.pl));
...