Should I choose ActivePerl or Strawberry Perl for Windows?

我对 Perl 完全是个新手,但我想试一试。我了解到 Windows 平台上有两个竞争对手的发行版(我猜其他操作系统上也有 只是 Perl:)。

Wikipedia 说,如果需要,Strawberry Perl提供了额外的开发工具来编译 CPAN 模块。听起来不错。

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

这两者之间有明显的交易。我想知道: 我应该从哪里开始呢?如果我选择一个有多难,是不是要迁移到另一个?


I gave both distributions a run for a couple of weeks. I actually liked both which is a good thing! 这两样都不会出错。 I ended up going with ActivePerl simply because it comes with offline documentation(HTML) - a great life-savior for those who are on the road or just not always connected. It was super-easy for me to get started with Perl language while I was on vacation when I wasn't always online.

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

104005 次浏览

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

一个重要的问题可能是各个模块能够提供或不能提供的版本。PPM 包可能滞后于 CPAN 发布,但是如果不小心,最前沿的 CPAN 发布可能会破坏向后兼容性。此外,有时会有 PPM 包,用于在 Strawberry Perl 下无法正确构建的内容(尽管这意味着该模块的设计往往很糟糕)。

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

Strawberry Perl 使用 CPAN,这意味着就模块而言,您是最新的。当事物被添加到 CPAN 中时,您可以立即访问它们。Strawberry Perl 还带有 MinGW,这意味着 Strawberry Perl 可以直接使用不少来自 CPAN 的 XS 模块,而不需要进行任何修改。MinGW 发行版提供 gccmakeld和其他工具来帮助您构建模块。我认为 Strawberry Perl 还附带了一些模块,可以让您安装 PPM (Perl Package Manager 文件)。

ActivePerl installs modules using its own format called PPM (Perl Package Manager). The official repository is hosted by ActiveState. You can find PPMs for most of the popular modules so you shouldn't have any trouble unless you are looking for an obscure or really new package (so bleeding-edge stuff won't work because PPM usually lags behind CPAN). Although easier to install than CPAN modules, PPMs are specifically created for Windows and so some CPAN modules will not work (because they do Unix-specific things).

这两种方法我都用过,而且似乎在大多数情况下都有效。但是我倾向于 Strawberry Perl,因为它的环境更接近 Unix,所以没有太多的不兼容性。另一方面,ActivePerl 是为 Windows 制作的,因此它在 Windows 中工作得非常好。

Another option is to install Cygwin and Perl that comes with Cygwin. I have done that before and it works reasonably well. You also get access to CPAN.

选择你认为最适合你的。

Strawberry Perl 的方法更加 Unixy,当我使用它的时候,我总是感到非常高兴。

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

在我看来,草莓 Perl 更好。/主观

对于 Vivin Paliath 的有益回答,我们可以做一点小小的放大:

ActivePerl/PPM 优点: 如果您的版本有一个 PPM,那么它就会工作,而且很简单。

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

Strawberry Perl / CPAN pros: Your repository is CPAN, not a bunch of binaries maintained by third parties. You have new modules the moment the author releases them, and you're using the build system that the author intended.

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

Strawberry Perl/CPAN 缓解因素: Strawberry 开发人员尝试使用 非常非常难来确保一切顺利,并且尽可能多的 CPAN 可用于您,当模块被确定为故障点(很难在 Windows 上构建,但需要其他流行的模块/应用程序)时,他们要么与作者一起修复模块,以便每个人 可以安装它,或者在特殊情况下,应用自己的修复程序,并将该模块与 Strawberry Perl 或 Strawberry Perl Professional 捆绑在一起。

我更喜欢草莓 Perl。我很欣赏 ActivePerl 的努力,但我认为它是开发过程中的一个瓶颈。在社区团结起来构建 Strawberry Perl 以将 Windows 带入 Perl 生态系统的“第一世界”之前,它们是 有需要,但现在已经不再需要它们了。

After having used both for years, I'd say, for me at least, ActivePerl is a much more convenient choice. The PPM 安装程序 included in ActivePerl allows you to add 替代 PPM 存储库 which will give you access to almost all useful Perl modules available on CPAN - but prepared and tested for Windows. This was for me, in the long run, a much better (and more robust) choice. Even for the Windows version of the Apache HTTP server, there is a precompiled mod_perl (2.0.4) ppm available which will (did for me) work out of the box with ActivePerl 5.12.1 and Apache 2.2.15.

在尝试在 Windows 7上安装 DBI + DBD: : mysql 之后,我想我放弃了 Strawberry Perl (这是 ActivePerl 中的 想都不用想; 只需点击 ppms 并选择 install)。

但是也许现在这个问题已经解决了,也许我们可以选择 Strawberry Perl 安装的目录(我不能)。

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

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

在理想的情况下,我会选择 Debian-interixPkgsrc-interix Perl (不是随 Interix/SFU/SUA 附带的古老 Perl) ,因为它提供了最像 POSIX/UNIX 的系统(包括真正的 copy-on-write fork,而不是 Cygwin 的 Windows fork 仿真)。

我过去曾经安装过 SFU/SUA (它安装在这里的 Windows 机器上) ,但是并不是每个人都可以/会仅仅为 Perl 安装 SFU/SUA。在这些情况下,我建议使用 ActivePerl,主要是因为 Windows 用户对这个界面比较熟悉(PPM 图形 shell 与 CPAN) ,并且它与 Perl Dev Kit (PerlExe、 PerlNET、 PerlSvc 和朋友们)的集成。

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

ActivePerl 从 Community 版本中排除了大量的模块,并且在 Windows 下构建这些模块是一件非常痛苦的事情。

此外,他们还允许您免费下载和使用最新版本。其他一切,比如访问5.8.8或更早版本的模块,要么是业务版($1000/year/server) ,要么是企业版(每个报价)。

两者都很棒,工作方式也一样。Strawberry Perl 以能够构建 XS 模块而闻名,但如果您只是安装 Visual Studio SDK (或免费 Express 版本) ,也可以使用 ActivePerl 来实现这一点。

因此,如果您能够访问 Visual Studio,那么最好的方法就是从源代码构建 Perl (如果您读取 README,那么构建 Perl 非常容易) ,并使用相同的编译器继续构建模块。这实际上是一个比混合使用编译器/模块更好的主意。

如果你使用 ActiveState,你必须考虑的一件事是: 如果你将它安装在面向互联网的服务器上,那么你需要购买一个商业许可证(Ron Warshawsky 提到的1000美元/年/服务器)。这并不意味着它不能工作; 它只是 EULA 中的一个需求。许多人并不知道这一点,他们没有购买相应的许可证就将其安装在面向 Internet 的服务器上。

If you are using the box.com client to sync files, then you probably want (at least at the moment) to go with Strawberry Perl. The ppm executable conflicts with one of the Box.com DLL files. The GUI will not start at all (yielding a Windows message that the "perl ... interpreter has stopped working".) I have also had intermittent problems using the command line version of ppm when the Box.com client is installed.

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