113

我对 Perl 完全陌生,但我想尝试一下。我读到了两个可用于 Windows 平台的竞争对手发行版(我猜其他操作系统上只有Perl :)。

维基百科说,Strawberry Perl带有额外的开发工具,可以在必要时编译 CPAN 模块。这对我来说听起来不错。

它还说ActivePerl有很多预打包的模块,这些模块更容易用 PPM 安装。听起来也很棒!

这两者之间存在明显的权衡。我想知道:我应该选择什么开始?如果我选择一个有多难,是迁移到另一个吗?


我让这两个发行版都运行了几个星期。我实际上都喜欢这两者,这是一件好事!任何一个都不会出错。我最终选择了 ActivePerl,只是因为它带有离线文档(HTML 格式) ——对于那些在路上或只是不经常连接的人来说,这是一个很好的救命稻草。当我不在网上时,我在度假时开始使用 Perl 语言非常容易。

Strawberry Perl 至少和它一样好,如果不是更好的话。所以我也完全可以推荐它。我不得不说一个人应该学习 Perl——它是一门非常漂亮的语言。试试看!

4

10 回答 10

47

Strawberry Perl 使用 CPAN,这意味着就模块而言,您是最新的。将事物添加到 CPAN 后,您可以立即访问它们。Strawberry Perl 还带有 MinGW,这意味着 Strawberry Perl 可以直接从 CPAN 使用相当多的 XS 模块而无需任何修改。MinGW 发行版附带gccmakeld其他工具来帮助您构建模块。我认为 Strawberry Perl 还附带了一些模块,可让您安装 PPM(Perl 包管理器文件)。

ActivePerl 使用它自己的称为 PPM(Perl 包管理器)的格式安装模块。官方存储库由 ActiveState 托管。您可以找到大多数流行模块的 PPM,因此除非您正在寻找一个不起眼的或真正新的包,否则您应该不会遇到任何麻烦(因此前沿的东西不会起作用,因为 PPM 通常落后于 CPAN)。尽管比 CPAN 模块更容易安装,但 PPM 是专门为 Windows 创建的,因此某些 CPAN 模块将无法工作(因为它们执行 Unix 特定的操作)。

我以前都使用过,它似乎适用于大多数情况。但我倾向于 Strawberry Perl,因为它的环境更接近 Unix,所以没有太多不兼容的地方。另一方面,ActivePerl 是为 Windows 设计的,因此它可以很好地与 Windows 配合使用。

另一种选择是安装 Cygwin 附带的 Cygwin 和 Perl。我以前做过,而且效果很好。您还可以访问 CPAN。

选择你认为最适合你的。

于 2010-07-29T18:03:53.530 回答
39

稍微放大一下 Vivin Paliath 的有用答案:

ActivePerl / PPM 专家:如果您的版本有 PPM,它就会工作,而且很简单。

ActivePerl / PPM 缺点:并不总是有一个 PPM,或者至少并不总是一个最新的。

Strawberry Perl / CPAN 专家:您的存储库是 CPAN,而不是由第三方维护的一堆二进制文件。在作者发布它们的那一刻,您就有了新模块,并且您正在使用作者想要的构建系统。

Strawberry Perl / CPAN 缺点:不能保证所有东西都能用 Windows 工具完美构建。

Strawberry Perl / CPAN 缓解因素:Strawberry 开发人员非常非常努力地确保一切顺利,尽可能多的 CPAN 可供您使用,以及当模块被识别为问题点时(难以在 Windows 上构建,但对于其他流行的模块/应用程序是必需的),他们要么与作者一起修复模块,以便每个人都可以安装它,或者在特殊情况下,应用他们自己的修复程序并将模块与 Strawberry Perl 或 Strawberry Perl Professional 捆绑在一起.

我更喜欢 Strawberry Perl。我很欣赏 ActivePerl 正在尝试做的事情,但我认为这是开发过程中的一个瓶颈。在社区聚集在一起并构建 Strawberry Perl 以将 Windows 带入 Perl 生态系统的“第一世界”之前,它们是必要的,但它们不再是必需的。

于 2010-07-29T22:22:37.313 回答
34

在使用了多年之后,我想说,至少对我来说,ActivePerl 是一个更方便的选择。ActivePerl 中包含的PPM 安装程序允许您添加替代 PPM 存储库,这将使您可以访问 CPAN 上几乎所有有用的 Perl 模块 - 但已针对 Windows 进行了准备和测试。从长远来看,这对我来说是一个更好(更强大)的选择。即使对于 Windows 版本的 Apache HTTP 服务器,也有一个预编译的 mod_perl (2.0.4) ppm 可用,它(对我来说)可以与 ActivePerl 5. 12 .1 和Apache 2.2.15一起工作。

我想我在尝试在 Windows 7 上安装 DBI + DBD::mysql 之后放弃了 Strawberry Perl(这在 ActivePerl 中毫无疑问;只需单击 ppms 并选择安装)。

但也许现在已经解决了。也许可以选择安装草莓 Perl 的目录(我不能)。

顺便说一句:要编译自己的 Inline 或 XS 东西,只需通过 ppm 安装 MinGW 编译器(我没有这样做,但看起来很有趣)。

附录:阅读下面的评论后,我再次检查了 Strawberry Perl,现在可以更改安装目录,这是 5.12.0 版本(这是实际版本)的一个表示功能。这将解决 Strawberry Perl 的一个重要(恕我直言)缺点(与 ActivePerl 相比)。

于 2010-07-29T22:26:26.277 回答
19

Strawberry Perl 在其方法上更加 Unixy,当我使用它时我总是很高兴。

然而,由于 ActivePerl 的自定义包管理系统,当我使用它时,它一直是一个巨大的痛苦。当您在企业环境中时,这很重要。

对于只是乱搞,IMO,Strawberry Perl 更好。/主观

于 2010-07-29T18:13:41.663 回答
16

两者都很棒并且工作相同。Strawberry Perl 以能够构建 XS 模块而闻名,但如果您只安装 Visual Studio SDK(或免费的 Express 版本),您也可以使用 ActivePerl 来做到这一点。

就此而言,如果您可以访问 Visual Studio,那么您能做的最好的事情就是从源代码构建 Perl(如果您阅读自述文件,这很容易)并继续使用相同的编译器构建您的模块。这实际上是一个比混合编译器/模块更好的主意。

如果使用 ActiveState,您必须考虑一件事:如果您将它安装在面向 Internet 的服务器上,那么您需要购买商业许可证(Ron Warshawsky 指出,每台服务器每年 1000 美元)。这并不意味着它不起作用;这只是 EULA 中的一项要求。许多人不知道这一点,并且在没有购买相应许可证的情况下将其安装在面向 Internet 的服务器上。

于 2013-04-19T14:30:17.137 回答
4

在一个完美的世界里,我会选择debian-interixpkgsrc-interix Perl(不是 Interix/SFU/SUA 附带的古老 Perl),因为它提供了最类似于 POSIX / UNIX 的系统(包括真正的写时复制fork,而不是 Cygwin 的 Windows fork 仿真)。

我过去有(它安装在 Windows 机器上),但不是每个人都可以/将安装 SFU/SUA 仅用于 Perl。在这些情况下,我推荐 ActivePerl,主要是因为 Windows 用户熟悉该界面(PPM 图形 shell 与 CPAN)以及它与 Perl 开发工具包(PerlExe、PerlNET、PerlSvc 和朋友)的集成。

此外,与其他人的回答相反,如果需要,您可以将 CPAN(和 CPAN shell)与 ActivePerl 一起使用(尽管它确实涉及首先通过 PPM 安装必要的开发工具)。

于 2010-08-21T11:00:23.650 回答
4

ActivePerl 从社区版中排除了大量模块,在 Windows 下构建它们真的很痛苦。

此外,他们会让您免费下载和使用最新版本。其他一切,例如访问 5.8.8 或更早版本的模块是商业版(1000 美元/年/服务器)或企业版(每个报价)。

于 2013-04-03T03:04:39.227 回答
3

如果您正确地设计了您的应用程序,那么您选择哪个并不重要。

重要的一点可能是每个模块可以提供或不提供的各种模块的版本。PPM 包可能落后于 CPAN 版本,但如果您不小心,最新的 CPAN 版本可能会破坏向后兼容性。此外,有时会有 PPM 包用于在 Strawberry Perl 下无法正确构建的东西(尽管这意味着该模块通常设计不佳)。

请注意您使用的任何模块的版本,无论您选择哪个,您都应该没问题。

于 2010-07-29T18:03:05.243 回答
3

如果 Larry Wall 使用 Strawberry Perl,你也应该这样做。;)

于 2015-02-05T18:43:14.580 回答
2

如果您使用 box.com 客户端来同步文件,那么您可能希望(至少目前)使用 Strawberry Perl。ppm可执行文件与 Box.com DLL 文件之一冲突。GUI 根本不会启动(产生“perl ...解释器已停止工作”的 Windows 消息。)我在安装 Box.com 客户端时使用命令行版本的 ppm 也遇到了间歇性问题。

于 2014-08-14T16:56:20.700 回答