103

The win32.perl.org web site provides references to several Perl distributions for MS Windows.

For a long time I have been using ActivePerl from ActiveState but recently I switched to Strawberry Perl.

IMHO The only advantage that Active Perl still has over Strawberry Perl is the fact that it comes with Perl Tk which means its easy to install Devel::ptkdb the graphical debugger. Other than that, I think Strawberry Perl has all the advantages.

3
  • Since this post I started to re-package Strawberry Perl with lots of additional modules, including Moose, Dancer and Padre. Readers might want to consider this as well: dwimperl.com
    – szabgab
    Commented Feb 25, 2012 at 6:52
  • 1
    There is another difference, the installation file of ActivePerl is 5MB while the StrawberryPerl file is 105MB.
    – skan
    Commented Apr 22, 2021 at 16:05
  • 1
    Update in 2021: PPM has been removed from ActivePerl 5.28, and will no longer build many packages for previous versions of ActivePerl. So, everybody who opted for ActivePerl because of the nice package manager will have to look for other good reasons. Today ActivePerl needs to be installed with CLI State Tool which looks cumbersome. And you need to pay(!) $96/year to get access to older versions of Perl. Commented Oct 29, 2023 at 13:32

11 Answers 11

82

Strawberry Perl is just getting better and better. One problem I've repeatedly had with ActiveState is that my modules sometimes fail to install because I need an upgrade to a core module, but they won't allow that. Thus, everybody who doesn't use Windows can use my code, but they can't do that with ActiveState's Perl.

ActiveState also has a very dodgy build system which often fails to report exactly why a module failed to build. I got so tired of emailing and asking for this information that I eventually gave up. I want my code to run on Windows, but if ActiveState doesn't provide me with that information and doesn't give me any option for upgrading core modules, I just can't use it. Some of my modules have NO build failures on any operating system -- except those with ActiveState Perl. Support Strawberry Perl and just don't worry about ActiveState.

If ActiveState has fixed their build system and their 'no upgrade to core modules' policy, it's worth revisiting.

2
  • 8
    It is possible to upgrade core modules from AS Perl 5.8.8 build 518 (released in January 2007). They also upgraded their CPAN build system in 2008, but I don't know exactly when. Commented May 8, 2009 at 10:42
  • 1
    Strawberry Perl is great. However, if you use MSys Bash as your shell, there's a known issue that commands such as cpan don't work. Commented Jan 21, 2013 at 13:59
30

There is no single-best Perl distribution. Vanilla Perl (relocatable, redistributable Perl), and it's more-developer-friendly Strawberry Perl have significant potential.

However, there is a very good reason why ActivePerl is so very popular. The advantages mostly come in the form of ease of deployment for your end users (no compiler necessary to use their package manager, PPM). The ActiveState PDK (Perl Development Kit) is also a very nice way to pack a complete Windows binary that doesn't require any Perl to be installed on the user's machine.

Unfortunately, many very nice CPAN modules (like the Perl bindings for OpenSSL) are not available via ActiveState's repository.

Like most things, you should make your selection based on which distribution best meets your needs.

1
  • PerlApp does seem like a useful tool (I haven't compared it with Par::Packer), but the PDK it comes in has a $300 price tag.
    – Nate Glenn
    Commented Dec 19, 2013 at 19:48
17

I primarily use ActivePerl, but I really like where Strawberry Perl is headed. I love that the cpan shell "just works" and I don't have to jump through a bunch of hoops to install XS modules. (e.g. ExtUtils::FakeConfig, though that's less necessary in more recent ActivePerl builds.) I'm also excited about the possibility of Perl on a thumbdrive. The dev release of Portable Perl is pretty usable already.

I agree that the main advantage of ActivePerl is Tk out of the box, but note that as of 5.10 ActivePerl no longer ships with Tk by default. It ships with Tkx instead.

13

The future is definitely Strawberry Perl. Whichever you chose though (and this problem is not unique to Windows), if you're distributing the end result to other machines, you're going to have to be careful as regards the installer/installation instructions you provide.

6

Strawberry Perl is more like Perl on *nix. It comes with MinGW which could be useful on its own. The Perl modules can also be installed with either ppm or cpan.

2
  • 1
    Note: if you install mingw alongside strawberry perl, be mindful that strawberry perl may be using different versions of the minsys apps. I had some major problems getting strawberry perl to build Win32::OLE and other modules until I removed mingw from my path.
    – Robert P
    Commented Feb 27, 2009 at 21:32
  • If you really want Perl on Windows like Perl on *nix, install SUA / SFU (don't install the Perl that that comes with) and use Debian Interix / pkgsrc-interix 's Perl.
    – MkV
    Commented Aug 25, 2010 at 0:18
4

I always use Cygwin (xterms with bash are so much better than cmd windows) and the Perl that comes with it. I install Perl modules with the CPAN shell (the "cpan" command); it works fine.

4

I by far prefer Strawberry Perl. For one, it installs gcc as part of mingwin, so that you can install directly from CPAN.

I used ActiveState's perl for awhile, but I had a lot of flakiness from one machine to another despite them being (seemingly) identically configured. Their PPM module packaging left a bad taste, also. It makes it dead-simple to manage packages, but you rely on them to update PPM after CPAN updates. Also, PPM is not by any means the full content of the CPAN; The last time I'd used ActivePerl, I had a hard time finding all of the modules I needed, and the ones that were there were often an old version.

0
3

ActiveState Perl has been considered the de facto Windows Perl for quite a while. While it has a lot of flaws and a lot of us use something else, it remains very popular. If you were building Perl code to be executed on a Windows machine (other than your own), I would consider writing it with an eye towards a default (or as default as I could get it) AS Perl installation executing it. Anything else and you are introducing barriers to entry for others trying to use your app later.

3
  • AFAIK, PAR pp works fine with Strawberry which is a great advantage in terms of distributing you own apps because IIUC you'll need an OEM license to be able to distribute pp compiled apps if you use their DLLs. Commented Jun 19, 2009 at 17:17
  • 3
    @Sinan, your statement about ActivePerl licensing and PAR is incorrect. See clause 4 of the license The license also allows You to redistribute parts of the Package as part of an application generated by wrapping tools such as PAR, PerlApp or Perl2Exe. However, this License does not allow You to (a) redistribute the Package as a whole, (b) use its parts to create a language distribution, or (c) redistribute the PerlScript, Perl for ISAPI or PerlEx components with Your application. activestate.com/activeperl/license
    – daotoad
    Commented Jan 27, 2010 at 23:37
  • @daotoad Hmmmm ... I could swear an earlier version did not allow it, but I am not even sure if I am remembering correctly. Thank you for the correction. Commented Jan 27, 2010 at 23:55
2

I had major problems with Strawberry, and I felt there was no support. The good people at PerlMonks couldn't help me, and I gave up. If this page leaves you with a certain lack of confidence, there's your answer.

1

The code I write lands in Fortune 500 companies so a "corporate" feeling is helpful. I've used ActivePerl so far, and it's worked fine for both internal tooling and for distribution to those large'ish customers.

1

I am using Active State Perl 5.014, which works OK.

The problem is, it doesn't have the latest version of Padre (the IDE, debbugging environment).

Not the answer you're looking for? Browse other questions tagged or ask your own question.