当我想提供目录以包含我写的模块时:
perl -Ilib -Isome/dir script.pl
我是否应该包含archname
目录,还是自动扫描?
来自Makefile
:
{APP_ROOT}/local/lib/perl5/${shell perl -MConfig -e 'print $$Config{archname}'}
UPD
perl -V
输出:
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0
答案 0 :(得分:4)
archname
包含在@INC
中:
perl -MConfig -E 'say $_ for ($Config{archname}, @INC)'
x86_64-linux
/home/user/perl5/perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux
/home/user/perl5/perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1
/home/user/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-linux
/home/user/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1
<强> UPD 强> 如果它存在,它将被添加:
perl -Isomedir -e 'local $"="\n"; print "@INC"'
somedir
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0
mkdir -p somedir/x86_64-linux
perl -Isomedir -e 'local $"="\n"; print "@INC"'
somedir/x86_64-linux
somedir
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux
/home/kes/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0
答案 1 :(得分:2)
是,如果存在,当您添加父级非arch目录时,arch子目录将添加到@INC
。
基线:
$ perl -E'say for @INC' | wc -l
5
通过-I
添加:
$ perl -Ilib -E'say for @INC' | head -n -5
lib/5.24.0/x86_64-linux-thread-multi
lib/5.24.0
lib
通过PERL5LIB
添加:
$ PERL5LIB=lib perl -E'say for @INC' | head -n -5
lib/5.24.0/x86_64-linux-thread-multi
lib/5.24.0
lib
通过lib.pm添加:
$ perl -E'use lib qw( lib ); say for @INC' | head -n -5
lib/5.24.0/x86_64-linux-thread-multi
lib/5.24.0
lib
通过mylib.pm添加:
$ perl -E'use mylib; say for @INC' | head -n -5
/.../lib/5.24.0/x86_64-linux-thread-multi
/.../lib/5.24.0
/.../lib
如果您直接添加到@INC
,不会添加它们:
$ perl -E'unshift @INC, "lib"; say for @INC' | head -n -5
lib