首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目录会自动扫描吗?

目录会自动扫描吗?
EN

Stack Overflow用户
提问于 2017-04-28 13:53:06
回答 2查看 54关注 0票数 1

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

代码语言:javascript
复制
perl -Ilib -Isome/dir script.pl

我应该也包括archname目录吗?还是自动扫描?

来自Makefile

代码语言:javascript
复制
{APP_ROOT}/local/lib/perl5/${shell perl -MConfig -e 'print $$Config{archname}'}

UPD

perl -V输出:

代码语言:javascript
复制
/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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-28 13:58:01

默认情况下,archname包括在@INC中,如果它存在:

代码语言:javascript
复制
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"'

代码语言:javascript
复制
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"'

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2017-04-28 15:12:36

是的,如果存在,则在添加父非arch目录时,arch子目录将被添加到@INC

基线:

代码语言:javascript
复制
$ perl -E'say for @INC' | wc -l
5

通过-I添加

代码语言:javascript
复制
$ perl -Ilib -E'say for @INC' | head -n -5
lib/5.24.0/x86_64-linux-thread-multi
lib/5.24.0
lib

通过PERL5LIB添加

代码语言:javascript
复制
$ 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添加:

代码语言:javascript
复制
$ 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添加:

代码语言:javascript
复制
$ perl -E'use mylib; say for @INC' | head -n -5
/.../lib/5.24.0/x86_64-linux-thread-multi
/.../lib/5.24.0
/.../lib

如果您直接将它们添加到中,则不添加它们

代码语言:javascript
复制
$ perl -E'unshift @INC, "lib"; say for @INC' | head -n -5
lib
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43681925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档