2008-09-16 9 views
91

Die win32.perl.org Website bietet Verweise auf mehrere Perl-Distributionen für MS Windows.Welche Version von Perl sollte ich unter Windows verwenden?

Für eine lange Zeit habe ich von ActiveState ActivePerl benutze aber vor kurzem wechselte ich zu Strawberry Perl.

IMHO Der einzige Vorteil, den Active Perl noch gegenüber Strawberry Perl hat, ist die Tatsache, dass es mit Perl Tk geliefert wird, was bedeutet, dass es einfach zu installieren ist. Ansonsten denke ich, dass Strawberry Perl alle Vorteile hat.

+0

Seit diesem Post fing ich an, Strawberry Perl mit vielen zusätzlichen Modulen neu zu verpacken, einschließlich Moose, Dancer und Padre. Leser könnten dies ebenfalls in Betracht ziehen: http://dwimperl.com/ – szabgab

Antwort

76

Strawberry Perl wird gerade besser und besser. Ein Problem, das ich wiederholt mit ActiveState hatte, ist, dass meine Module manchmal nicht installiert werden können, weil ich ein Upgrade auf ein Core-Modul benötige, aber das wird nicht erlaubt. So kann jeder, der nicht Windows verwenden kann meinen Code verwenden, aber sie können dies nicht mit ActiveState Perl tun.

ActiveState hat auch ein sehr dubioses Build-System, das oft nicht genau berichtet, warum ein Modul nicht bauen konnte. Ich habe es satt, Mails zu schicken und nach diesen Informationen zu fragen, die ich schließlich aufgegeben habe. Ich möchte, dass mein Code unter Windows ausgeführt wird, aber wenn ActiveState mir diese Informationen nicht bereitstellt und mir keine Option zum Aktualisieren von Core-Modulen bietet, kann ich sie nicht verwenden. Einige meiner Module haben KEIN Build-Fehler auf einem Betriebssystem - außer denen mit ActiveState Perl. Unterstützen Sie Strawberry Perl und sorgen Sie sich nicht um ActiveState.

Wenn ActiveState sein Build-System und die Richtlinie "Kein Upgrade auf Core-Module" korrigiert hat, sollte es erneut aufgerufen werden.

+8

Es ist möglich, Kernmodule von AS Perl 5.8.8 Build 518 (erschienen im Januar 2007) zu aktualisieren. Sie haben auch 2008 ihr CPAN-Build-System aktualisiert, aber ich weiß nicht genau wann. –

+1

Erdbeer Perl ist großartig. Wenn Sie jedoch MSys Bash als Shell verwenden, gibt es ein [bekanntes Problem] (https://rt.cpan.org/Public/Bug/Display.html?id=82837), das Befehle wie 'cpan' nicht unterstützt Arbeit. –

17

Ich benutze hauptsächlich ActivePerl, aber ich mag wirklich wo Strawberry Perl geht. Ich liebe es, dass die cpan-Shell "einfach funktioniert" und ich muss nicht durch ein paar Reifen springen, um XS-Module zu installieren. (z. B. ExtUtils :: FakeConfig, obwohl das bei neueren ActivePerl-Builds weniger nötig ist.) Ich bin auch begeistert von der Möglichkeit, dass Perl auf einem Thumbdrive läuft. Die Entwicklerversion von Portable Perl ist schon ziemlich brauchbar.

Ich bin damit einverstanden, dass der Hauptvorteil der ActivePerl Tk aus der Box, aber beachten Sie, dass ab 5.10 ActivePerl nicht mehr mit Tk standardmäßig. Es wird stattdessen mit Tkx ausgeliefert.

2

ActiveState Perl wird seit einiger Zeit als de facto Windows Perl angesehen. Während es viele Mängel hat und viele von uns etwas anderes benutzen, bleibt es sehr beliebt. Wenn Sie Perl-Code erstellen, der auf einem anderen Windows-Rechner ausgeführt werden soll, würde ich ihn mit Blick auf einen Standard (oder so voreingestellt, wie ich ihn bekommen könnte) schreiben, wenn er von einer AS-Perl-Installation ausgeführt wird. Sonst noch etwas, und du bringst Eintrittsbarrieren für andere, die später deine App nutzen wollen.

+0

AFAIK, PAR pp funktioniert gut mit Strawberry, was einen großen Vorteil in Bezug auf die Verteilung Ihrer eigenen Apps darstellt, da IIUC eine OEM-Lizenz benötigt, um pp kompilierte Apps zu verteilen, wenn Sie ihre DLLs verwenden. –

+2

@Sinan, Ihre Aussage über ActivePerl Lizenzierung und PAR ist falsch. Siehe Abschnitt 4 der Lizenz "Die Lizenz erlaubt Ihnen auch, Teile des Pakets als Teil einer Anwendung neu zu verteilen, die durch Wrapping-Tools wie PAR, PerlApp oder Perl2Exe generiert wurde. Diese Lizenz erlaubt Ihnen jedoch nicht, (a) das Paket als Ganzes neu zu verteilen, (b) seine Teile zum Erstellen einer Sprachverteilung zu verwenden oder (c) die Komponenten PerlScript, Perl für ISAPI oder PerlEx mit Ihrer Anwendung neu zu verteilen.' http://www.activestate.com/activeperl/license/ – daotoad

+0

@daotoad Hmmmm ... Ich könnte schwören, eine frühere Version habe es nicht erlaubt, aber ich bin nicht einmal sicher, ob ich mich richtig erinnere. Danke für die Verbesserung. –

13

Die Zukunft ist definitiv Strawberry Perl. Unabhängig davon, was Sie gewählt haben (und dieses Problem ist nicht auf Windows beschränkt), müssen Sie beim Verteilen des Endergebnisses auf andere Computer vorsichtig sein, was die von Ihnen bereitgestellten Installations-/Installationsanweisungen betrifft.

28

Es gibt keine einfach beste Perl-Verteilung. Vanilla Perl (verschiebbare, verteilbar Perl), und es ist entwicklerfreundlicher Strawberry Perl haben ein erhebliches Potenzial.

Allerdings gibt es einen sehr guten Grund, warum ActivePerl so sehr beliebt ist. Die Vorteile liegen hauptsächlich in der einfachen Bereitstellung für Ihre Endbenutzer (kein Compiler erforderlich, um ihren Paketmanager, PPM zu verwenden).Das ActiveState PDK (Perl Development Kit) ist auch eine sehr gute Möglichkeit, eine vollständige Windows-Binärdatei zu packen, für die kein Perl auf dem Computer des Benutzers installiert werden muss.

Leider sind viele sehr nette CPAN-Module (wie die Perl-Bindungen für OpenSSL) nicht über das ActiveState-Repository verfügbar.

Wie die meisten Dinge sollten Sie Ihre Auswahl basierend auf der Verteilung treffen, die Ihren Bedürfnissen am besten entspricht.

+0

PerlApp scheint wie ein nützliches Werkzeug zu sein (ich habe es nicht mit Par :: Packer verglichen), aber das PDK, das es kommt, hat ein $ 300 Preisschild. –

2

Ich hatte große Probleme mit Strawberry, und ich spürte, dass es keine Unterstützung gab. Die guten Leute bei PerlMonks konnten mir nicht helfen, und ich gab auf. Wenn this page Sie mit einem gewissen Mangel an Vertrauen verlässt, gibt es Ihre Antwort.

6

Strawberry Perl ist mehr wie Perl on * nix. Es kommt mit MinGW, die allein nützlich sein könnte. Die Perl-Module können auch mit ppm oder cpan installiert werden.

+1

Hinweis: Wenn Sie Mingw neben Erdbeere Perl installieren, beachten Sie, dass Erdbeere Perl möglicherweise verschiedene Versionen der Apps verwendet. Ich hatte einige große Probleme mit der Erstellung von Win32 :: OLE und anderen Modulen, bis ich Mingw von meinem Pfad entfernte. –

+0

Wenn Sie wirklich Perl unter Windows wie Perl on * nix wollen, installieren Sie SUA/SFU (installieren Sie nicht die Perl, die mit dem Paket geliefert wird) und verwenden Sie Debian Interix/pkgsrc-interix 's Perl. – MkV

3

Ich benutze immer Cygwin (xterms mit bash sind so viel besser als cmd windows) und die Perl, die damit kommt. Ich installiere Perl-Module mit der CPAN-Shell (der "cpan" -Befehl); es funktioniert gut.

1

Der Code, den ich schreibe, landet in Fortune-500-Unternehmen, so dass ein "Corporate" -Gefühl hilfreich ist. Ich habe ActivePerl bisher verwendet, und es hat gut funktioniert sowohl für interne Werkzeuge als auch für den Vertrieb an diese großen Kunden.

4

Ich bei weitem bevorzuge Strawberry Perl. Zum einen installiert es GCC als Teil von Mingwin, so dass Sie direkt von CPAN installieren können.

Ich benutzte ActiveState für eine Weile, aber ich hatte eine Menge Schwäche von einem Rechner zum anderen, obwohl sie (scheinbar) identisch konfiguriert sind. Ihre PPM-Modulverpackung hat auch einen schlechten Geschmack hinterlassen. Es macht es tot-einfach, Pakete zu verwalten, aber Sie verlassen sich auf sie, um PPM nach CPAN-Updates zu aktualisieren. Außerdem ist PPM keineswegs der vollständige Inhalt des CPAN; Als ich das letzte Mal ActivePerl benutzt hatte, fiel es mir schwer, alle benötigten Module zu finden, und die, die da waren, waren oft eine alte Version.

+1

Ich bin gespannt, was eine Down-Vote bewertet hat. – gWaldo

0

Ich benutze Active State Perl 5.014, die OK funktioniert.

Das Problem ist, es hat nicht die neueste Version von Padre (die IDE, debugging-Umgebung).