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

时间:2020-03-05 18:55:43  来源:igfitidea点击:

win32.perl.org网站提供了针对MS Windows的多个Perl发行版的参考。

很长一段时间以来,我一直在使用ActivePerl
ActiveState,但最近我切换到
草莓Perl。

恕我直言,Active Perl相对于Strawberry Perl唯一的优点是Perl Tk附带了它,这意味着它易于安装
Devel :: ptkdb图形调试器。除此之外,我认为Strawberry Perl具有所有优点。

解决方案

回答

草莓Perl越来越好。我对ActiveState反复遇到的一个问题是我的模块有时无法安装,因为我需要升级到核心模块,但是它们不允许这样做。因此,每个不使用Windows的人都可以使用我的代码,但是他们不能使用ActiveState的Perl来做到这一点。

ActiveState也有一个非常狡猾的构建系统,通常无法准确报告模块构建失败的原因。我非常讨厌通过电子邮件发送和询问此信息,最终我放弃了。我希望我的代码在Windows上运行,但是如果ActiveState不向我提供该信息并且不给我任何升级核心模块的选择,我将无法使用它。我的某些模块在任何操作系统上都没有构建失败-带有ActiveState Perl的模块除外。支持Strawberry Perl,不用担心ActiveState。

如果ActiveState已修复其构建系统和"不升级至核心模块"的策略,则值得重新审视。

回答

我主要使用ActivePerl,但我非常喜欢Strawberry Perl的发展方向。我喜欢cpan外壳"可以正常工作",而且我不必跳过一堆箍来安装XS模块。 (例如,ExtUtils :: FakeConfig,尽管在最新的ActivePerl版本中这没必要。)我也对Perl在指驱动器上的可能性感到兴奋。 Portable Perl的开发版本已经可以使用了。

我同意ActivePerl的主要优点是可以立即使用Tk,但是请注意,从5.10版本开始,ActivePerl在默认情况下不再随Tk一起提供。它随Tkx一起提供。

回答

ActiveState Perl已经被认为是事实上的Windows Perl了一段时间。尽管它有很多缺陷,而且我们很多人使用其他东西,但它仍然很受欢迎。如果我们要构建要在Windows机器(而不是我们自己的Windows机器)上执行的Perl代码,我会考虑将其编写为默认(或者默认情况下)的AS Perl安装执行它。任何其他事情,都会给以后尝试使用应用程序的其他人引入进入障碍。

回答

未来肯定是Strawberry Perl。
无论选择哪种方法(这个问题不是Windows独有的),如果要将最终结果分发给其他计算机,则在提供的安装程序/安装说明方面都必须谨慎。

回答

没有最好的Perl发行版。 Vanilla Perl(可重定位,可重新分配的Perl),以及对开发人员更友好的Strawberry Perl具有巨大的潜力。

但是,有很好的理由说明ActivePerl如此受欢迎。优势主要表现为最终用户易于部署(无需使用其软件包管理器PPM的编译器)。 ActiveState PDK(Perl开发工具包)也是打包完整的Windows二进制文件(不需要在用户的计算机上安装任何Perl)的一种很好的方法。

不幸的是,许多非常好的CPAN模块(例如OpenSSL的Perl绑定)无法通过ActiveState的存储库获得。

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

回答

我在草莓方面遇到了重大问题,我感到没有任何支持。 PerlMonks的好人无法帮助我,我放弃了。如果此页面使我们毫无信心,那答案就对了。

回答

草莓Perl更像* nix上的Perl。 MinGW附带了它,它可能自己有用。 Perl模块也可以与ppm或者cpan一起安装。

回答

我总是使用Cygwin(带有bash的xterm比cmd Windows更好)和它附带的Perl。我使用CPAN外壳程序(" cpan"命令)安装Perl模块。它工作正常。

回答

我编写的代码在《财富》 500强公司中占有一席之地,因此"企业"的感觉很有帮助。到目前为止,我已经使用过ActivePerl,它对于内部工具和向那些大型客户的分发都非常有效。

回答

我到目前为止更喜欢草莓Perl。例如,它将gcc作为mingwin的一部分安装,以便我们可以直接从CPAN安装。

我花了一段时间使用ActiveState的perl,但是尽管它们(似乎)配置完全相同,但从一台机器到另一台机器却有很多脆弱之处。他们的PPM模块包装也留下了不好的味道。这使得管理软件包变得非常简单,但是我们需要依靠它们在CPAN更新后更新PPM。同样,PPM绝不是CPAN的全部内容;上一次使用ActivePerl时,我很难找到我需要的所有模块,那里的模块通常是一个旧版本。