我在只读区域中安装了perl版本,以及一些包,包括包Verilog-Perl
(只读区域意味着i不能从这个安装中删除文件,包括包)。
我在某个外部目录中安装了一个较新版本的Verilog-Perl
,现在我希望在外部 Verilog-Perl
版本中使用上面提到的perl版本,而不是包含在perl安装目录中的旧包。
也就是说,当我执行use Verilog::Parser;
时,我希望加载更新的版本
我怎么发动汽车呢?
谢谢!
发布于 2014-05-28 03:59:42
如果您只想修改您的环境以始终使用新位置而不使用脚本,那么PERLLIB
环境变量就是您的朋友。
转储包含列表的脚本:
#!/usr/bin/perl -w
use Data::Dumper;
print Dumper(@INC);
这是我的@INC。
$VAR1 = '/usr/local/lib64/perl5';
$VAR2 = '/usr/local/share/perl5';
$VAR3 = '/usr/lib64/perl5/vendor_perl';
$VAR4 = '/usr/share/perl5/vendor_perl';
$VAR5 = '/usr/lib64/perl5';
$VAR6 = '/usr/share/perl5';
$VAR7 = '.';
现在我将修改它并再次运行程序:
export PERLLIB="/home/mhkohne/lib"
$VAR1 = '/home/mhkohne/lib';
$VAR2 = '/usr/local/lib64/perl5';
$VAR3 = '/usr/local/share/perl5';
$VAR4 = '/usr/lib64/perl5/vendor_perl';
$VAR5 = '/usr/share/perl5/vendor_perl';
$VAR6 = '/usr/lib64/perl5';
$VAR7 = '/usr/share/perl5';
$VAR8 = '.';
我是在Linux系统上运行bash的,您需要为您的系统适当地修改该环境集。
发布于 2014-05-28 03:51:47
为此,您需要操作@INC
特殊变量。根据文献资料,它将按顺序检查每个目录中的模块。您可以通过将某个目录临时移到列表的前面来确定它的优先级。例如:
BEGIN {
unshift @INC, "/some/other/dir/";
require Some::Module;
shift @INC;
}
发布于 2014-05-28 09:35:05
使用lib
修改@INC
。
use lib '/path_to_your_new_src';
use Verilog::Parser;
# Confirm where perl pulled your module from:
print $INC{"Verilog/Parser.pm"}, "\n";
https://stackoverflow.com/questions/23910726
复制相似问题