簡體   English   中英

Perl:如何避免將當前目錄添加到模塊包含路徑?

[英]Perl: How to avoid adding current directory to module include path?

我想從通過 conda 安裝的 perl 工具覆蓋一些 perl 模塊。 但是,我無法覆蓋它,因為 perl 總是預先添加自己的模塊目錄:

/opt/anaconda/envs/vep-99/share/ensembl-vep-99.2-0/modules
/opt/anaconda/envs/vep-99/share/ensembl-vep-99.2-0
/home/user/.local/lib/perl5/lib/perl5/x86_64-linux-thread-multi
/home/user/.local/lib/perl5/lib/perl5
/opt/anaconda/envs/vep-99/lib/site_perl/5.26.2/x86_64-linux-thread-multi
/opt/anaconda/envs/vep-99/lib/site_perl/5.26.2
/opt/anaconda/envs/vep-99/lib/5.26.2/x86_64-linux-thread-multi
/opt/anaconda/envs/vep-99/lib/5.26.2
.

我現在做了一個非常丑陋的 hack,它只是更改了 perl 的工作目錄:

#!/bin/bash                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                             
SCRIPT="${SCRIPT:-vep}"
SCRIPT_DIR="$(dirname $(realpath $(which $SCRIPT)))"
 
export PERL5LIB="$PERL5LIB:$SCRIPT_DIR:$SCRIPT_DIR/modules"

cd /
 
cat $(which $SCRIPT) | perl $@

這會產生以下@INC:

//modules
/
/home/user/.local/lib/perl5/lib/perl5/x86_64-linux-thread-multi
/home/user/.local/lib/perl5/lib/perl5
/opt/anaconda/envs/vep-99/share/ensembl-vep-99.2-0
/opt/anaconda/envs/vep-99/share/ensembl-vep-99.2-0/modules
/opt/anaconda/envs/vep-99/lib/site_perl/5.26.2/x86_64-linux-thread-multi
/opt/anaconda/envs/vep-99/lib/site_perl/5.26.2
/opt/anaconda/envs/vep-99/lib/5.26.2/x86_64-linux-thread-multi
/opt/anaconda/envs/vep-99/lib/5.26.2
.

這在技術上是可行的,但仍然有///modules. 在包含路徑中。 有沒有辦法擺脫它?

以下是添加這些目錄的內容:

export PERL5LIB="$PERL5LIB:$SCRIPT_DIR:$SCRIPT_DIR/modules"

只需刪除或注釋掉該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM