作者qrtt1 (愚人)
看板perl
标题[问题] 关於 CPAN.pm 的疑问
时间Thu Feb 15 15:10:17 2007
昨天要新增模组时,CPAN shell 有提示字串说 CPAN 有出新的版本
建议安装新版,於是安装了之後,反而不能跑了
cpan[2]> install html::Greeting
Running install for module html::Greeting
Running make for T/TB/TBONE/HTML-Seamstress-4.26.tar.gz
CPAN: LWP::UserAgent loaded ok
Can't call method "can" without a package or object reference at
/usr/local/lib/perl5/5.8.5/CPAN.pm line 2904.
=========================================================================
my @urllist = map { $CPAN::Config->{urllist}[$_] } @host_seq;
for my $u (@urllist) {
if ($u->can("text")) {
$u->{TEXT} .= "/" unless substr($u->{TEXT},-1) eq "/";
} else {
$u .= "/" unless substr($u,-1) eq "/";
$u = CPAN::URL->new(TEXT => $u, FROM => "USER");
}
}
=========================================================================
问题出在黄色那一句,不过弟对於这 $u 到是什麽不太明白。
虽然不知有没有人也遇到了,我还是提一下我乱来的解决方式
目前是找比较旧一点的版本 source code 直接 make & make install
把档盖掉了 ( CPAN-1.88_67 版本号相同, patch 次数不同)
再观察了这个能跑的版本,写法有一点不同
不是用
$u->can("text")
而是
UNIVERSAL::can($u,"text")
==========================================================================
sub _get_urllist {
my($self) = @_;
$CPAN::Config->{urllist} ||= [];
unless (ref $CPAN::Config->{urllist} eq 'ARRAY') {
$CPAN::Frontend->mywarn("Malformed urllist; ignoring. Configuration
file corrupt?\n");
$CPAN::Config->{urllist} = [];
}
my @urllist = grep { defined $_ and length $_ }
@{$CPAN::Config->{urllist}};
for my $u (@urllist) {
CPAN->debug("u[$u]") if $CPAN::DEBUG;
if (UNIVERSAL::can($u,"text")) {
$u->{TEXT} .= "/" unless substr($u->{TEXT},-1) eq "/";
} else {
$u .= "/" unless substr($u,-1) eq "/";
$u = CPAN::URL->new(TEXT => $u, FROM => "USER");
}
}
\@urllist;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.50.186