我知道在命令提示符下使用CPAN安装“强制”模块很容易。我试图通过脚本实现相同的目标:
use CPAN;
eval "use Filesys::DiskSpace" or do {
CPAN::install("Filesys::DiskSpace");
};
有没有办法在代码中添加'force'选项? 编译模块时出现以下错误:
make test had returned bad status, won't install without force
警告可能不严重,所以我想继续进行安装。 感谢。
答案 0 :(得分:5)
您似乎需要将CPAN
实例化为变量并在其上调用force()
方法
my $cpan = CPAN->new;
$cpan->force();
$cpan->install("Filesys::DiskSpace");
答案 1 :(得分:3)
只要你真的知道你在做什么:
eval "use Filesys::DiskSpace; 1" or do {
CPAN::Shell->force("install","Filesys::DiskSpace");
};
use
内置函数即使成功也没有返回任何有用的内容,因此必须在字符串eval中包含“;1
”。
答案 2 :(得分:3)
看起来您只确保安装了Filesys::DiskSpace
:
unless( eval { require Filesys::DiskSpace } ){
require CPAN;
CPAN::Shell->force("install","Filesys::DiskSpace");
}
如果您想确保加载了Filesys::DiskSpace
,请将其安装(如果不可用):
BEGIN{
unless( eval { require Filesys::DiskSpace } ){
require CPAN;
CPAN::Shell->force("install","Filesys::DiskSpace");
}
}
use Filesys::DiskSpace;
如果您的Perl程序出现问题,可能是因为您刚刚安装了损坏的模块。
该特定模块自1999年以来尚未正式发布 它也有相当多的bug reports: