2013-11-07 5 views
1

Как я могу переопределить содержимое @INC моими путями из командной строки. Если я использую параметр «-I», он добавляет только путь по умолчанию.Как переопределить perl @INC из командной строки

+0

'@ INC' - это список, как любой другой в Perl, вы можете добавлять и удалять из него. Также я думаю, что переключатель '-l' добавляется к' @ INC' –

+2

@HunterMcMillen - это массив, а не список. – rightfold

+0

Что значит «переопределить»? Покажите несколько примеров. – toolic

ответ

3

Я не знаю, почему вы хотите удалить из @INC. Модули в ранних трактах в @INC отменяют модули в более поздних путях, так что, как правило, просто добавляют к фронту @INC

export PERL5LIB=path2:path2 
script ... 

    -or- 

PERL5LIB=path2:path2 script ... 

    -or- 

perl -Mlib=path1,path2 script ... 

    -or- 

# Doesn't add arch subdirs automatically! 
perl -Ipath1 -Ipath2 script ... 

Но можно сделать то, что вы хотите.

perl -e' 
    @INC = grep { ... } @INC; 
    do(shift(@ARGV)) 
     or die "Error attempting to execute script: [email protected]\n"; 
' script arg arg 

Заменить ... выражение, которое возвращает истину, если вы хотите сохранить путь в $_ в @INC.

0
$ export PERL5LIB=/custom/dir:/another/custom/dir; 
$ perl script.pl 
Смежные вопросы