在Mac OS X Lion上,使用Perl v5.12.3时,Archive::Extract模块会发出警告。

3
我正在使用Mac OS X Lion预装的默认Perl版本5.12.3。当我在脚本中使用带有-W模块的模块Archive::Extract时,会出现以下警告:
Subroutine version::declare redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 139.
Subroutine version::qv redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 140.
Subroutine version::vcmp redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 142.
Subroutine version::stringify redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 145.
Subroutine version::("" redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 146.
Subroutine version::new redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 147.
Subroutine version::parse redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 148.
Subroutine UNIVERSAL::VERSION redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 194.
Name "IPC::Cmd::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Maketext.p\
m line 444.
Name "Archive::Extract::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Ma\
ketext.pm line 444.
Name "Win32::Locale::Lexicon" used only once: possible typo at /System/Library/Perl/5.12/I18N/LangTags/Detect.pm l\
ine 140.
Name "Params::Check::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Maket\
ext.pm line 444.
Name "Module::Load::Conditional::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/\
Locale/Maketext.pm line 444.

我尝试在CPAN中运行升级。我甚至删除了我的.cpan目录并重新配置了我的CPAN。我测试了该模块,看起来它工作得很好。但是我对警告感到不舒服。
另一个让我发布这个问题的问题是我的其他一些模块没有被升级(通过CPAN,当然)。当我在运行Linux时,这从未发生过。
Failed during this command:
 PMQS/BerkeleyDB-0.49.tar.gz                  : make NO
 MIKER/NetAddr-IP-4.058.tar.gz                : make_test NO
 DMR/DProf-19970614.tar.gz                    : make NO
 NWCLARK/perl-5.8.6.tar.gz                    : make NO isa perl
 JESSE/perl-5.13.9.tar.gz                     : make NO isa perl
 SHERZODR/Class-PObject-2.17.tar.gz           : make_test NO
 GBARR/IO-Tty-0.04.tar.gz                     : writemakefile NO '/usr/bin/perl Makefile.PL' returned status 65280
 DOY/Moose-2.0004.tar.gz                      : make_test NO
 RJBS/perl-5.15.2.tar.bz2                     : make NO isa perl
 FLORA/perl-5.15.4.tar.gz                     : make NO isa perl

我应该尝试清理默认的perl安装,并使用homebrew或macports进行清洁安装吗?是否有一些明显的问题导致了所有这些问题?

谢谢你的帮助。

1个回答

9

From perlrun...

-W   Enables all warnings regardless of "no warnings" or $^W.

你得到了你所要求的。

在正常操作中,你不应该使用-W。有时候模块会故意关闭某些警告,因为他们知道自己的操作会触发这些警告。

尝试使用-w代替。

至于你的另一个问题......有时候CPAN模块无法安装。更改Perl版本或操作系统可能会导致这种情况发生。你需要查看安装尝试的详细输出。或者你可以使用look Module::Name进入Module::Name源代码压缩包中的shell,在那里手动测试和调试。

话虽如此,建议保留操作系统提供的Perl,并安装一个新的Perl进行开发。这样,你就可以随意更改,安装任何你想要的模块和Perl版本,而不必担心破坏你的操作系统或在下一个操作系统升级时被覆盖掉升级。

perlbrew是处理这个问题的最佳方法之一。


感谢您的回复。我已经尝试使用-w选项。它对Win32::Locale::Lexicon发出了一个相当合理的警告,但我愿意忽略它。我会尝试使用perlbrew。 - shibumi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接