我应该在Windows上使用哪个版本的Perl?

103

win32.perl.org网站提供了多个适用于微软Windows操作系统的Perl发行版本的参考资料。

长期以来,我一直在使用ActiveState提供的ActivePerl,但最近我转换到了Strawberry Perl

在我看来,唯一有优势的是ActivePerl附带了Perl Tk,这意味着可以轻松安装Devel::ptkdb图形化调试器。除此之外,我认为Strawberry Perl具有全部优势。


自从发布这篇文章以来,我开始重新打包Strawberry Perl,并加入了许多额外的模块,包括Moose、Dancer和Padre。读者们也可以考虑使用这个:http://dwimperl.com/ - szabgab
还有一个区别,ActivePerl的安装文件大小为5MB,而StrawberryPerl的文件大小为105MB。 - skan
2021年更新:PPM已从ActivePerl 5.28中移除,并且将不再为之前版本的ActivePerl构建许多软件包。因此,所有因为方便的软件包管理器而选择ActivePerl的人将不得不寻找其他好的理由。如今,ActivePerl需要使用CLI State Tool进行安装,看起来有些繁琐。而且,您需要支付96美元/年才能访问较旧版本的Perl。 - undefined
11个回答

82

草莓 Perl 越来越好用了。我一直遇到的一个问题是,在 ActiveState 上,我的模块有时因为需要升级核心模块而无法安装,但他们不允许这样做。因此,那些不使用 Windows 的人可以使用我的代码,但是在 ActiveState Perl 上却不能。

ActiveState 还有一个非常靠不住的构建系统,经常无法报告模块构建失败的原因。我厌倦了发送电子邮件寻求信息,最终放弃了。虽然我想让我的代码在 Windows 上运行,但如果 ActiveState 不提供这些信息并且没有升级核心模块的选项,我就无法使用它。我的一些模块在任何操作系统上都没有构建失败的情况,除了使用 ActiveState Perl 的操作系统。支持草莓 Perl,不要担心 ActiveState。

如果 ActiveState 已经解决了他们的构建系统和 “不能升级核心模块” 政策,那么值得重新考虑。


8
可以将 AS Perl 5.8.8 build 518(发布于2007年1月)的核心模块升级。他们在2008年也升级了他们的 CPAN 构建系统,但我不知道具体时间。 - Alexandr Ciornii
1
草莓 Perl 很棒。但是,如果您使用 MSys Bash 作为您的 shell,那么有一个已知问题(https://rt.cpan.org/Public/Bug/Display.html?id=82837),即像 cpan 这样的命令无法正常工作。 - Colonel Panic

30

没有单一最佳的Perl发行版。Vanilla Perl(可重定位、可再分发的Perl)和更加开发者友好的Strawberry Perl具有显著的潜力。

然而,ActivePerl 之所以如此受欢迎,有一个非常好的原因。它的优势主要体现在您的终端用户部署时的便利性(使用其软件包管理器PPM无需编译器)。ActiveState PDK(Perl Development Kit)也是打包完整Windows二进制文件的非常好的方式,不需要在用户机器上安装任何Perl。

不幸的是,许多非常好的CPAN模块(例如 OpenSSL 的Perl绑定)在ActiveState的仓库中不可用。

像大多数事情一样,您应该根据哪个发行版最能满足您的需求来进行选择。


PerlApp 看起来是一个有用的工具(我还没有与 Par::Packer 进行比较),但它所包含的 PDK 售价为 $300。 - Nate Glenn

17
我主要使用ActivePerl,但我真的很喜欢Strawberry Perl的发展方向。我喜欢cpan shell“只需运行”并且不必费力安装XS模块。(例如ExtUtils :: FakeConfig,尽管在最近的ActivePerl版本中这已经不太必要了。)我也对在thumbdrive上使用Perl感到兴奋。Portable Perl的开发版本已经相当可用。

我同意ActivePerl的主要优点是默认带有Tk,但请注意,自5.10版本以来,ActivePerl不再默认带有Tk。它改为默认带有Tkx。


13

未来肯定是Strawberry Perl。 无论你选择哪个(这个问题并不局限于Windows),如果你要将最终结果分发给其他机器,你必须谨慎处理提供的安装程序/安装说明。


6

草莓 Perl 更像是在 *nix 上的 Perl。它附带了 MinGW,这本身就很有用。Perl 模块也可以使用 ppm 或 cpan 安装。


1
请注意:如果您在Strawberry Perl旁边安装mingw,请注意Strawberry Perl可能正在使用不同版本的minsys应用程序。在我从路径中移除mingw之前,我遇到了一些主要问题,无法构建Win32 :: OLE和其他模块。 - Robert P
如果你真的想在Windows上使用像*nix上的Perl一样的Perl,那么安装SUA / SFU(不要安装附带的Perl),并使用Debian Interix / pkgsrc-interix的Perl。 - MkV

4
我远远更喜欢Strawberry Perl。首先,它作为mingwin的一部分安装了gcc,因此您可以直接从CPAN安装。

我曾经使用过ActiveState的perl,但是尽管它们(表面上)配置相同,但在不同机器上我遇到了很多问题。他们的PPM模块的打包方式让人感觉不太好。它使管理软件包非常简单,但是您需要依赖他们更新PPM以跟进CPAN的更新。此外,PPM并不是CPAN的全部内容;上次我使用ActivePerl时,我发现很难找到所有我所需的模块,而且那些模块通常是旧版本。


2
我很好奇是什么导致了负评。 - gWaldo

4

我经常使用Cygwin(xterms与bash比cmd窗口好得多),并且使用它自带的Perl。我使用CPAN shell(“cpan”命令)安装Perl模块,这很好用。


3

ActiveState Perl长期以来一直被认为是事实上的Windows Perl。虽然它有很多缺陷,而且我们中的很多人使用其他东西,但它仍然非常受欢迎。如果你正在构建要在Windows机器上执行的Perl代码(不是你自己的),我会考虑着眼于默认情况下(或尽可能接近默认情况)AS Perl安装程序的执行方式来编写它。否则,你将为其他试图稍后使用你的应用程序的人引入障碍。


据我所知,PAR pp与Strawberry很好地协同工作,这在分发自己的应用程序方面是一个巨大的优势,因为如果您使用他们的DLL,则需要OEM许可才能分发编译的pp应用程序。 - Sinan Ünür
3
@Sinan,你关于ActivePerl许可和PAR的陈述是不正确的。请看许可证中的第4条款:“许可证还允许您将软件包的部分作为由封装工具(如PAR、PerlApp或Perl2Exe)生成的应用程序的一部分进行再分发。然而,该许可证不允许您(a)整体再分发软件包,(b)使用其部分创建语言分发,或(c)将PerlScript、Perl for ISAPI或PerlEx组件与您的应用程序一起再分发。”http://www.activestate.com/activeperl/license/ - daotoad
@daotoad 嗯嗯嗯...我记得早期版本好像不允许这样做,但我甚至不确定我是否记得正确。感谢您的纠正。 - Sinan Ünür

2

我在使用Strawberry的过程中遇到了很大的问题,感觉没有得到任何支持。即使向PerlMonks社区求助也没有解决。如果这个页面让你对于Strawberry缺乏信心,那么这就是答案。


1
我编写的代码被用于财富500强企业,因此需要具备"企业级"感觉。 我迄今为止使用的是ActivePerl,它对于内部工具和分发给那些较大客户都运行良好。

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