2016-11-04 72 views
0

我想安装一个缺少的模块使用我的脚本,因为我不能指望我的用户做任何简单的事情,因为安装缺少模块。无法找到包CPAN :: Debug for @CPAN :: Shell :: ISA在

use strict; 
use warnings; 
use CPAN::Shell; 

sub try_load { 
    my $mod = shift;  
    eval("use $mod"); 

    if ([email protected]) { 
     #print "\[email protected] = [email protected]\n"; 
     return(0); 
    } else { 
     return(1); 
    } 
} 

my $module = 'URI::Escape'; 
if (try_load($module)) { 
    print "loaded\n"; 
} else { 
    print "not loaded\n"; 
    CPAN::Shell->install("URI::Escape"); 
    # system("ppm install "); 
} 

但我总是得到一个错误上面的测试脚本:

Can't locate package CPAN::Debug for @CPAN::Shell::ISA at checkmodule.pl line 3.

但是当我做:

my $module = 'CPAN::Debug'; 
if (try_load($module)) { 
    print "loaded\n"; 
} else { 
    print "not loaded\n"; 
    CPAN::Shell->install("CPAN::Debug"); 
    # system("ppm install "); 
} 

我得到的消息loaded意思我有CPAN::Debug ???。

我不能这样做:perl -MCPAN -e shell,因为CPAN认为我的GCC 4.6.1版本不够好,想要安装4.6.3,这会破坏我的许多开发环境以及安装的工具我的用户系统。 [我真的希望强制CPAN使用我的系统版本的MinGW GCC,但我不知道如何,但这是另一次]。

有没有人知道我可以解决这个错误上面在我的标题? 谢谢!

+0

它字面上谈论工作这个包,就像在命名空间中一样。问题*不是*模块无法加载;这是它*没有*加载。这似乎表明你已经搞砸了CPAN :: Shell或CPAN :: Debug。 – ikegami

+0

hey @ikegami,我如何强制CPAN使用我的系统版本的GCC,而不是下载并安装更新的GCC?我不想升级,因为我的一些工具是使用GCC的旧版本进行编译的,如果我升级它将会搞乱很多其他的东西。我试图让工作更轻松,而不是更难。 – YouHaveaBigEgo

+0

我不知道。这是ActiveState添加到他们的发行版中的功能。 – ikegami

回答

0

CPAN::ShellCPAN模块只是一个组成部分,而不是孤立的

使用。如果你只需要改变你的use声明use CPAN那么一切都应该为你