Cpan模块安装错误

时间:2013-04-08 10:50:17

标签: perl

我正在尝试安装cpan Module。但是发生以下错误

请为此提供解决方案

cpan[3]> install xml::xpath
Going to read '/Users/user/.cpan/Metadata'
  Database was generated on Sun, 07 Apr 2013 09:53:02 GMT
Warning: Cannot install xml::xpath, don't know what it is.
Try the command

    i /xml::xpath/

to find objects with matching identifiers.

cpan[4]> i/xml::xpath/
Catching error: "Can't locate object method \"xpath/\" via package \"i/xml\" (perhaps you forgot to load \"i/xml\"?) at /System/Library/Perl/5.12/CPAN.pm line 375, <FIN> line 4.\cJ" at /System/Library/Perl/5.12/CPAN.pm line 391
    CPAN::shell() called at /System/Library/Perl/5.12/App/Cpan.pm line 295
    App::Cpan::_process_options('App::Cpan') called at /System/Library/Perl/5.12/App/Cpan.pm line 364
    App::Cpan::run('App::Cpan') called at /usr/bin/cpan5.12 line 12

cpan[5]> 

1 个答案:

答案 0 :(得分:4)

那是安装错误。你好像忘记了i和正则表达式之间的空格。

要搜索模块,我建议使用MetaCPAN site

Perl模块区分大小写。模块的正确名称为XML::XPath


cpan模块似乎做了一些元编程,你把它搞错了:

命令的第一个非空格字符串被视为方法名称,因此

cpan[n]> foo

会做

my $method = "foo";
$shell->$method; # like $shell->foo

但是,您可以使用方法的完全限定名称来调用其他包中的方法。常见的情况是SUPER伪包:

MyClass->SUPER::new(@args);

仅仅因为你不能声明包含特殊字符的包和子包并不意味着不可能使用它们。因此,完全限定的方法名称i/xml::xpath/分为包名i/xml和子名xpath/

在常规Perl代码中使用这些名称是不可能的,但是因为使用变量作为方法名称的技巧,解析器被绕过了。