我正在尝试安装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]>
答案 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代码中使用这些名称是不可能的,但是因为使用变量作为方法名称的技巧,解析器被绕过了。