archname目录是否会自动扫描?

时间:2017-04-28 13:53:06

标签: perl

当我想提供目录以包含我写的模块时:

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

2 个答案:

答案 0 :(得分:4)

默认情况下,{p> 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
相关问题