我正在使用与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安装并使用自制软件或macports进行全新安装?有什么明显的东西我错过了导致所有问题吗?
感谢您的帮助。
答案 0 :(得分:9)
来自perlrun ...
-W Enables all warnings regardless of "no warnings" or $^W.
你得到了你所要求的。
您不应该在正常操作中使用-W
。有时模块会故意关闭某些事情的警告,因为他们知道他们正在做的事情会触发它们。
请尝试-w
。
至于你的其他问题......有时CPAN模块无法安装。更改Perl版本或操作系统可以做到这一点。您将不得不查看安装尝试的详细输出。或者您可以将look Module::Name
放入Module :: Name的源tarball中的shell中,您可以在其中手动测试和调试。
也就是说,建议让操作系统单独提供Perl并安装一个新的用于开发。这允许您进行任何您想要的更改,安装您想要的任何模块以及您想要的任何Perl版本,而不用担心操作系统搞乱或者在下一次操作系统升级中将您的升级结束。
perlbrew是解决这个问题的最好方法之一。