如何访问模块的根安装目录中的子目录(t,脚本)?

时间:2010-06-18 18:48:19

标签: perl perl-module

模块Foo :: Bar已安装在@INC

的某处

除递归检查@INC Foo,然后Bar,然后scriptst之外,是否有办法访问这些目录来自模块本身

例如,我想从lib/scripts/findmeifyoucan.pl调用Foo/Bar.pm中的特定脚本。

1 个答案:

答案 0 :(得分:2)

您可以使用%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));