Perl

Perl
Perl language logo.svg
Paradigma Multi-Paradigma: funktional, Imperativ, objektorientierter (Klassenbasierte), reflektierend
Entworfen von Larry Wall
Entwickler Larry Wall
Erstmals erschienen 1. Februar 1988; Vor 34 Jahren[1]
Stabile Version
  • 5.36[2] / 28. Mai 2022; Vor 2 Monaten
  • 5.34.1[3] / 13. März 2022; vor 4 Monaten
Vorschau -Version
5.37.0[4] / 28. Mai 2022; Vor 2 Monaten
Disziplin tippen Dynamisch
Implementierungssprache C
OS Plattformübergreifend
Lizenz Künstlerische Lizenz 1.0[5][6] oder GNU Allgemeine öffentliche Lizenz[7]
Dateiname -Erweiterungen .plx, .pl, .pm, .xs, .t, .pod, .cgi
Webseite www.Perl.org
Beeinflusst von
Awk, BASIC, C, C ++, Lispeln, sed, Unix Shell[8]
Beeinflusst
CoffeeScript, Groovig, JavaScript, Julia, LPC, Php, Python, Raku, Rubin, Power Shell
  • Perl -Programmierung bei Wikibooks

Perl ist eine zweifache Familie hohes Level, allgemeiner Zweck, interpretiert, Dynamische Programmiersprachen. "Perl" bezieht sich auf Perl 5, aber von 2000 bis 2019 verwies es auch auf seine neu gestaltete "Schwestersprache" Perl 6, bevor der Name des letzteren offiziell geändert wurde Raku Im Oktober 2019.[9][10]

Obwohl Perl offiziell kein Akronym ist, ist[11] Es gibt verschiedene Backronyme im Gebrauch, einschließlich "praktisch Extraktion und Berichtssprache ".[12] Perl wurde von entwickelt von Larry Wall 1987 als Allzweck Unix Skriptsprache Um die Berichtsverarbeitung zu vereinfachen.[13] Seitdem hat es viele Änderungen und Überarbeitungen erfahren. Raku, das im Jahr 2000 als Neugestaltung von Perl 5 begann, entwickelte sich schließlich zu einer separaten Sprache. Beide Sprachen werden weiterhin unabhängig von verschiedenen Entwicklungsteams entwickelt und liehen sich illual Ideen voneinander aus.

Die Perlsprachen liehen Funktionen aus anderen Programmiersprachen, einschließlich C, Sch, Awk, und sed;[14] Sie bieten Textverarbeitungsanlagen ohne die willkürlichen Datenlängengrenzen vieler Zeitgenössische UNIX -Befehlszeilenwerkzeuge.[15] Perl 5 erlangte Ende der neunziger Jahre als eine weit verbreitete Popularität als CGI Scripting Sprache, teilweise aufgrund ihrer mächtigen regulären Ausdruck und Saite Parsing Fähigkeiten.[16][17][18][19]

Zusätzlich zu CGI wird Perl 5 für verwendet Systemadministration, Netzwerkprogrammierung, Finanzen, Bioinformatikund andere Anwendungen wie für GUIS. Es wurde aufgrund seiner Flexibilität und Kraft "The Swiss Army Chainsaw of Scripting Languages" bezeichnet.[20] Und auch was manche als Hässlichkeit betrachten[21] Aufgrund der Verwendung von Sonderfiguren als viele andere Sprachen. 1998 wurde es auch als das bezeichnet "Klebeband das hält das Internet zusammen, "in Bezug auf seine allgegenwärtige Verwendung als Klebersprache und seine wahrgenommene Uneleganz.[22]

Perl ist hoch ausdrucksvoll Programmiersprache: Der Quellcode für einen bestimmten Algorithmus kann kurz und sehr komprimierbar sein.[23][24]

Name

Perl wurde ursprünglich "Perle" bezeichnet. Wall wollte der Sprache einen kurzen Namen mit positiven Konnotationen geben. Wand entdeckte die vorhandenen PERLE Programmiersprache vor Perls offizieller Veröffentlichung und änderte die Rechtschreibung des Namens.[25]

Wenn Sie sich auf die Sprache beziehen, wird der Name aktiviert: Perl. Wenn Sie sich auf das Programm selbst beziehen, ist der Name unkapitalisiert (Perl) Weil die meisten Unix-ähnlichen Dateisysteme fallempfindlich sind. Vor der Veröffentlichung der ersten Ausgabe von Programmierung perlEs war üblich, die Sprache als zu beziehen Perl. Randal L. SchwartzDer Name der Sprache hat jedoch im Buch genutzt, um es besser zu machen, wenn es bei TypeSet besser ist. Dieser Fallunterschied wurde anschließend als kanonisch dokumentiert.[26]

Der Name wird gelegentlich als erweitert als BackRonym: Praktische Extraktion und Berichtssprache[27] Und Wall ist eigen Pathologisch vielseitiger Müll Lister welches in der ist Handbuch Seite für Perl.[28]

Geschichte

Frühe Versionen

Larry Wall begann 1987 mit der Arbeit an Perl, während er als Programmierer bei arbeitete Unisys,[15] und Version 1.0 wurde an comp.sources.unix veröffentlicht Newsgroup Am 1. Februar 1988.[1] Die Sprache wurde in den nächsten Jahren rasch erweitert.

Perl 2, das 1988 veröffentlicht wurde, zeigte einen besseren regulären Ausdrucksmotor. Perl 3, veröffentlicht 1989, fügte Unterstützung für die Unterstützung für Binärdaten Ströme.

Ursprünglich war die einzige Dokumentation für Perl ein einziger langer Mann Seite. 1991, Programmierung perl, der vielen Perl -Programmierern als "Kamelbuch" bekannt ist, wurde wegen seines Covers veröffentlicht und wurde die de facto Referenz für die Sprache. Gleichzeitig wurde die Perl -Versionsnummer auf 4 gestoßen, um nicht eine große Veränderung der Sprache zu markieren, sondern um die Version zu identifizieren, die vom Buch gut dokumentiert wurde.

Frühes Perl 5

Perl 4 durchlief eine Reihe von Wartungsveröffentlichungenin Perl 4.036 im Jahr 1993, woraufhin die Mauer Perl 4 aufgab, um mit der Arbeit an Perl 5 zu beginnen. Erstes Design von Perl 5 wurde 1994 fortgesetzt. Die Perl5-Porter Mailingliste wurde im Mai 1994 gegründet, um die Arbeiten zum Portieren von Perl 5 auf verschiedene Plattformen zu koordinieren. Es bleibt das primäre Forum für Entwicklung, Wartung und Portierung von Perl 5.[29]

Perl 5.000 wurde am 17. Oktober 1994 veröffentlicht.[30] Es war eine fast vollständige Umschreibung der Dolmetscherund es fügte der Sprache viele neue Funktionen hinzu, einschließlich Objekte, Verweise, lexikalische (meine) Variablen, und Module. Wichtig ist, dass Module einen Mechanismus für die Erweiterung der Sprache darstellten, ohne den Dolmetscher zu ändern. Dies ermöglichte es dem Kerndolmetscher, sich zu stabilisieren, auch da gewöhnliche Perl -Programmierer neue Sprachfunktionen hinzufügen konnten. Perl 5 ist seitdem in aktiver Entwicklung.

Perl 5.001 wurde am 13. März 1995 veröffentlicht. Perl 5.002 wurde am 29. Februar 1996 mit dem neuen Prototypen veröffentlicht. Dies ermöglichte Modulautoren zu machen Unterroutinen Das verhielt sich wie Perl Gebäude. Perl 5.003 wurde am 25. Juni 1996 als Sicherheitsveröffentlichung veröffentlicht.[31]

Eines der wichtigsten Ereignisse in der Perl 5 -Geschichte fand außerhalb der richtigen Sprache statt und war eine Folge seiner Modulunterstützung. Am 26. Oktober 1995 die Umfassendes Perl Archivnetzwerk (CPAN) wurde als a etabliert Repository für die Perlsprache und Perl -Module; Ab Mai 2017 enthält es über 185.178 Module in 35.190 Verteilungen, geschrieben von mehr als 13.071 Autoren, und spiegelt sich weltweit an mehr als 245 Standorten wider.[32]

Perl 5.004 wurde am 15. Mai 1997 veröffentlicht und umfasste unter anderem das Universalpaket, wobei Perl ein Basisobjekt gab, von dem alle alle Klassen wurden automatisch abgeleitet und die Fähigkeit, Versionen von Modulen zu erfordern. Eine weitere bedeutende Entwicklung war die Aufnahme der Cgi.pm Modul,[33] was zu Perls Popularität als beitrug CGI -Skriptsprache.[34]

Perl 5.004 Unterstützung für Unterstützung für Microsoft Windows, Plan 9, Qnx, und Amigaos.[33]

Perl 5.005 wurde am 22. Juli 1998 veröffentlicht. Diese Veröffentlichung enthielt mehrere Verbesserungen an der Regex Motor, neue Haken in das Backend durch die B::* Module, die QR // Regex Quote Operator, eine große Auswahl anderer neuer Kernmodule und Unterstützung für mehrere weitere Betriebssysteme, einschließlich Beos.[35]

2000–2020

Hauptversion[30] Neuestes Update[36]
Alte Version, nicht mehr gepflegt: 5.4 1999-04-29
Alte Version, nicht mehr gepflegt: 5.5 2004-02-23
Alte Version, nicht mehr gepflegt: 5.6 2003-11-15
Alte Version, nicht mehr gepflegt: 5.8 2008-12-14
Alte Version, nicht mehr gepflegt: 5.10 2009-08-22
Alte Version, nicht mehr gepflegt: 5.12 2012-11-10
Alte Version, nicht mehr gepflegt: 5.14 2013-03-10
Alte Version, nicht mehr gepflegt: 5.16 2013-03-11
Alte Version, nicht mehr gepflegt: 5.18 2014-10-01
Alte Version, nicht mehr gepflegt: 5.20 2015-09-12
Alte Version, nicht mehr gepflegt: 5.22 2017-07-15
Alte Version, nicht mehr gepflegt: 5.24 2018-04-14
Alte Version, nicht mehr gepflegt: 5.26 2018-11-29
Alte Version, nicht mehr gepflegt: 5.28 2020-06-01
Alte Version, nicht mehr gepflegt: 5.30 2020-06-01
Alte Version, nicht mehr gepflegt: 5.32 2021-01-23
Ältere Version, dennoch gepflegt: 5.34 2022-03-13
Aktuelle stabile Version: 5.36 2022-05-28
Zukünftige Veröffentlichung: 7.0 2023?
Legende:
Alte Version
Ältere Version, noch gepflegt
Aktuelle stabile Version
Neueste Vorschau -Version
Zukünftige Veröffentlichung

Perl 5.6 wurde am 22. März 2000 veröffentlicht. Wichtige Änderungen enthalten 64-Bit Unterstützung, Unicode String -Darstellung, Unterstützung für Dateien über 2 Gib und das Schlüsselwort "unser" "unser".[37][38] Bei der Entwicklung von Perl 5.6 wurde die Entscheidung getroffen, die zu wechseln Versioning Schema zu einem weiteren ähnlichen anderen Open -Source -Projekten; Nach 5.005_63 wurde die nächste Version 5.5.640, wobei Pläne für Entwicklungsversionen ungerade Zahlen und stabile Versionen haben, die sogar Zahlen haben.[39]

Im Jahr 2000 forderte Wall Vorschläge für eine neue Version von Perl der Community. Der Prozess führte zu 361 RFC -Dokumenten (Anfrage für Kommentare), die zur Führung der Entwicklung von Perl 6 verwendet werden sollten. 2001.[40] Die Arbeiten an den "Apokalypsen" für Perl 6 begannen eine Reihe von Dokumenten, die die Änderungsanfragen zusammenfassen und die Gestaltung der nächsten Generation von Perl darstellen sollten. Sie wurden eher als Digest der RFCs als als formales Dokument präsentiert. Zu diesem Zeitpunkt existierte Perl 6 nur als Beschreibung einer Sprache.

Perl 5.8 wurde erstmals am 18. Juli 2002 veröffentlicht und hatte seitdem fast jährliche Updates. Perl 5.8 verbesserte Unicode -Unterstützung, fügte eine neue E/A -Implementierung hinzu, fügte eine neue Thread -Implementierung hinzu, verbesserte numerische Genauigkeit und fügte mehrere neue Module hinzu.[41] Ab 2013 bleibt diese Version nach wie vor die beliebteste Version von Perl und wird von Red Hat 5, SUSE 10, Solaris 10, HP-UX 11.31 und AIX 5 verwendet

Im Jahr 2004 begannen die Arbeiten an den "Synopsen" - Dokumente, die ursprünglich die Apokalypsen zusammenfassten, aber zur Spezifikation für die Perl 6 -Sprache wurden. Im Februar 2005, Audrey Tang begann mit der Arbeit weiter Mops, ein Perl 6 -Dolmetscher in Haskell.[42] Dies war die erste konzertierte Anstrengung, Perl 6 Wirklichkeit werden zu lassen. Diese Bemühungen wurden im Jahr 2006 ins Stocken geraten.[43]

Ponie ist eine Abkürzung für Perl für neue interne Motor. Das Ponie -Projekt existierte von 2003 bis 2006 und sollte eine Brücke zwischen Perl 5 und Perl 6 sein. Es war ein Versuch, den Perl 5 -Dolmetscher umzuschreiben Papagei, die perl 6 virtuelle Maschine. Ziel war es, die Zukunft der Millionen von Perl 5 -Code bei Tausenden von Unternehmen auf der ganzen Welt zu gewährleisten.[44] Das Ponie -Projekt endete 2006 und wird nicht mehr aktiv entwickelt. Einige der Verbesserungen des Perl 5 -Dolmetschers im Rahmen von Ponie wurden in dieses Projekt gefaltet.[45]

Am 18. Dezember 2007 wurde der 20. Jahrestag von Perl 1.0, Perl 5.10.0, veröffentlicht. Perl 5.10.0 enthielt bemerkenswerte neue Funktionen, die es Perl 6 näherten. Dazu gehörten a Schaltanweisung (genannt "gegeben"/"wenn"), reguläre Ausdrücke Updates und die Smart Match Operator (~~).[46][47] Etwa zur gleichen Zeit begann die Entwicklung ernsthaft mit einer weiteren Umsetzung von Perl 6 bekannt als Rakudo Perl, entwickelt zusammen mit dem Virtuelle Papageienmaschine. Seit November 2009 hat Rakudo Perl regelmäßig monatliche Veröffentlichungen gehabt und ist jetzt die vollständigste Umsetzung von Perl 6.

Eine wesentliche Änderung des Entwicklungsprozesses von Perl 5 trat mit Perl 5.11 auf; Die Entwicklungsgemeinschaft hat zu einem monatlichen Release -Zyklus von Entwicklungsveröffentlichungen mit einem jährlichen Zeitplan stabiler Veröffentlichungen gewechselt. In diesem Plan folgen Bugfix Point Releases alle drei Monate den stabilen Veröffentlichungen.

Am 12. April 2010 wurde Perl 5.12.0 veröffentlicht. Bemerkenswerte Kernverbesserungen sind neue Paketname Version Syntax, der Yada -Yada Y2038 Compliance, Regex Conversion Overloading, Dtrace Unterstützung und Unicode 5.2.[48]

Am 14. Mai 2011 wurde Perl 5.14 mit freigelassen JSON Unterstützung integriert.[49]

Am 20. Mai 2012 wurde Perl 5.16 veröffentlicht. Zu den bemerkenswerten neuen Funktionen gehören die Möglichkeit, eine bestimmte Version von Perl anzugeben, die man emulieren möchte, sodass Benutzer ihre Version von Perl verbessern können, aber dennoch alte Skripte ausführen, die normalerweise nicht kompatibel wären.[50][Fehlgeschlagene Überprüfung] Perl 5.16 aktualisiert auch den Kern, um sie zu unterstützen Unicode 6.1.[50]

Am 18. Mai 2013 wurde Perl 5.18 veröffentlicht. Bemerkenswerte neue Funktionen sind die neuen DTRACE -Hooks, lexikalische Subs, mehr Kern :: Subs, Überholung des Hashs aus Sicherheitsgründen, Unterstützung für Unicode 6.2.[51]

Am 27. Mai 2014 wurde Perl 5.20 veröffentlicht. Zu den bemerkenswerten neuen Funktionen gehören Unterroutine -Signaturen, Hash -Scheiben/neue Slice -Syntax, Postfix Dereferencing (experimentell), Unicode 6.3, Rand () unter Verwendung eines konsistenten Zufallszahlengenerators.[52]

Einige Beobachter würdigen die Veröffentlichung von Perl 5.10 mit dem Beginn der modernen Perlbewegung.[53] Insbesondere beschreibt dieser Ausdruck einen Entwicklungsstil, der die Verwendung der CPAN umfasst, die jüngsten Entwicklungen in der Sprache nutzt und streng über das Erstellen von Code von hoher Qualität ist.[54] Während das Buch "Modern Perl"[55] Kann der sichtbarste Standardträger dieser Idee sein, andere Gruppen wie die erleuchtete Perl-Organisation[56] habe die Ursache aufgenommen.

Ende 2012 und 2013 begannen mehrere Projekte für alternative Implementierungen für Perl 5: Perl5 in Perl6 vom Rakudo Perl -Team,[57] Moe von Stevan Little und Freunden,[58] p2[59] vom Perl11 -Team unter Reini Urban, Gperl von Goccy,[60] und rperl, Ein Kickstarter -Projekt unter der Leitung von Will Braswell und dem Perll11 -Projekt angeschlossen.[61]

2020 weiter

Im Juni 2020, Perl 7 wurde als Nachfolger von Perl 5 angekündigt.[62] Perl 7 sollte zunächst auf Perl 5.32 basieren, wobei eine Veröffentlichung in der ersten Halbzeit von 2021 erwartet wurde und die Kandidaten früher freigeben.[63] Dieser Plan wurde im Mai 2021 ohne Veröffentlichungszeitraum oder Version von Perl 5 zur Verwendung als angegebener Grundlinie überarbeitet.[64] Wenn Perl 7 veröffentlicht wird, wird Perl 5 in eine langfristige Wartung geraten. Unterstützte Perl 5 -Versionen erhalten jedoch weiterhin wichtige Sicherheits- und Fehlerbehebungen.[65]

Symbole

Kamel

Das Kamelsymbol von O'Reilly Media

Programmierung perl, herausgegeben von O'Reilly Mediazeigt ein Bild von a Dromedary Kamel auf dem Cover und wird allgemein als "Kamelbuch" bezeichnet.[66] Dieses Bild ist sowohl ein inoffizielles Symbol für Perl als auch allgemein geworden Hacker Emblem, erscheinen auf T-Shirts und anderen Kleidungsstücken.

O'Reilly besitzt das Bild als Warenzeichen aber lizenzen es für Nichtkommerziell Verwenden Sie nur eine Bestätigung und einen Link zu www.perl.com. Die Lizenzierung für den kommerziellen Gebrauch wird von Fall zu Fall entschieden.[67] O'Reilly bietet auch Logos "Programmierrepublik Perl" für nichtkommerzielle Websites und "Powered by Perl" -Tasten für jede Website, die Perl verwendet.[67]

Zwiebel

Das von der Perl Foundation verwendete Zwiebellogo

Die Perl Foundation besitzt ein alternatives Symbol, eine Zwiebel, die es seinen Tochtergesellschaften lizenziert, Perl Händler, Perlmonks, Perl.org und andere.[68] Das Symbol ist a visuelles Wortspiel an Perlzwiebel.[69]

Raubvogel

Alternative Perl 5 Logo

Sebastian Riedel, der Schöpfer von Mojolicious, erstellte ein Logo, das a darstellt Raptor Dinosaurier, die unter einer CC-SA-Lizenz erhältlich ist, Version 4.0.[70] Das Analogon des Raptors stammt aus einer Reihe von Gesprächen, die Matts Trout ab 2010 gegeben hat.[71]

Überblick

Laut Wall hat Perl zwei Slogans. Das erste ist "Es gibt mehr als einen Weg, dies zu tun, "allgemein bekannt als tmtowtdi. Der zweite Slogan ist" einfache Dinge sollten einfach und harte Dinge sein sollten ".[15]

Merkmale

Die Gesamtstruktur von Perl stammt weitgehend von C. Perl ist prozedural in der Natur mit Variablen, Ausdrücke, Zuweisungsanweisungen, befestigen-Delimitiert Blöcke, Kontrollstrukturen, und Unterroutinen.[72]

Perl nimmt auch Funktionen aus der Shell -Programmierung. Alle Variablen sind mit der Führung markiert Sigils, die es Variablen ermöglichen interpoliert direkt in Saiten. Im Gegensatz zur Shell verwendet Perl jedoch Sigils bei allen Zugriffs auf Variablen, und im Gegensatz zu den meisten anderen Programmiersprachen, die Sigils verwenden, bezeichnet der Sigil den Typ der Variablen, sondern den Typ des Ausdrucks. Zum Beispiel, während ein Array vom Sigil "@" bezeichnet wird (zum Beispiel @ArrayName) Ein einzelnes Mitglied des Arrays wird vom Skalar -Sigil "$" bezeichnet (zum Beispiel $ arrayName [3]). Perl verfügt außerdem über viele integrierte Funktionen, die Tools bereitstellen, die häufig für die Shell-Programmierung verwendet werden (obwohl viele dieser Tools von Programmen implementiert werden, die extern zur Shell sind), wie z. Sortierungund rufen Betriebssystem Einrichtungen.

Perl nimmt Hashes ("assoziative Arrays") von Awk und Reguläre Ausdrücke aus sed. Diese vereinfachen viele Analyse-, Text- und Datenmanagementaufgaben. Geteilt mit Lispeln ist der implizit Rückkehr des letzten Wertes in einem Block, und alle Aussagen sind auch Ausdrücke, die in größeren Ausdrücken selbst verwendet werden können.

Perl 5 Zusätzte Funktionen, die den Komplex unterstützen Datenstrukturen, erstklassige Funktionen (das ist, Schließungen als Werte) und ein objektorientiertes Programmiermodell. Diese beinhalten Verweise, Pakete, klassenbasierte Methode Versand, und lexikalisch abgeschottete Variablen, zusammen mit Compiler -Richtlinien (zum Beispiel die strikt Pragma). Eine mit Perl 5 eingeführte wichtige zusätzliche Funktion war die Möglichkeit, Code als wiederverwendbare Module zu verpacken. Wall stellte später fest, dass "die gesamte Absicht des Modulsystems von Perl 5 darin bestand, das Wachstum der Perl -Kultur und nicht den Perl -Kern zu fördern".[73]

Alle Versionen von Perl machen automatisch Data-typing und automatisch Speicherverwaltung. Der Dolmetscher kennt den Typ und Lagerung Anforderungen jedes Datenobjekts im Programm; Es zugibt und befreit sie für sie nach Bedarf bei Bedarf Referenzzählung (Es kann also nicht umgehen Zirkulardatenstrukturen ohne manuelle Intervention). Legal Geben Sie Conversions ein - Zum Beispiel werden Konvertierungen von der Nummer zu String automatisch durchgeführt Laufzeit; Illegale Typkonvertierungen sind tödliche Fehler.

Entwurf

Das Design von Perl kann als Reaktion auf drei breite Trends in der Computerindustrie verstanden werden: sinkende Hardwarekosten, steigende Arbeitskosten und Verbesserungen in Compiler Technologie. Viele frühere Computersprachen, wie z. Forran und C zielte darauf ab, teure Computerhardware effizient zu nutzen. Im Gegensatz dazu wurde Perl so gestaltet, dass Computerprogrammierer schneller und einfacher Programme schreiben konnten.[74]

Perl verfügt über viele Funktionen, die die Aufgabe des Programmierers auf Kosten von größerer erleichtern Zentralprozessor und Speicheranforderungen. Dazu gehören die automatische Speicherverwaltung; Dynamisches Typing; Saiten, Listen und Hashes; Reguläre Ausdrücke; Selbstbeobachtung; und ein eval () Funktion. Perl folgt der Theorie der "keine eingebauten Grenzen",[66] eine Idee ähnlich der Zero One Infinity Regel.

Die Wand wurde als Sprachwissenschaftler ausgebildet, und das Design von Perl ist sehr gut informiert von sprachlich Prinzipien. Beispiele beinhalten Huffman -Codierung (Gemeinsame Konstruktionen sollten kurz sein), eine gute Endgewichtung (die wichtigen Informationen sollten zuerst kommen) und eine große Sammlung von Sprachprimitive. Perl bevorzugt Sprachkonstrukte, die für Menschen präzise und natürlich sind, selbst wenn sie den Perl -Dolmetscher komplizieren.[75]

Perl's Syntax spiegelt die Idee wider, dass "Dinge, die anders sind, anders aussehen".[76] Zum Beispiel haben Skalare, Arrays und Hashes unterschiedliche führende Sigils. Array -Indizes und Hash -Tasten verwenden verschiedene Arten von Zahnspangen. Saiten und reguläre Ausdrücke haben unterschiedliche Standardgrenzwerte. Dieser Ansatz kann mit einer Sprache wie z. B. kontrastiert werden Lispeln, wo die gleiche grundlegende Syntax, bestehend aus einfach und universell Symbolische Ausdrücke, wird für alle Zwecke verwendet.

Perl erzwingt keine bestimmte Programmierparadigma (prozedural, objektorientierter, funktionaloder andere) oder verlangen der Programmierer, unter ihnen zu wählen.

Die Perl -Sprache und die Gemeinschaft und Kultur, die sie umgibt, ist weit verbreitet. Das Vorwort zu Programmierung perl beginnt: "Perl ist eine Sprache, um Ihren Job zu erledigen."[15] Eine Folge davon ist, dass Perl keine ordentliche Sprache ist. Es enthält viele Funktionen, toleriert Ausnahmen für seine Regeln und beschäftigt Heuristik syntaktische Unklarheiten auflösen. Aufgrund der verzeihenden Natur des Compilers können Fehler manchmal schwer zu finden sein. Die Funktionsdokumentation von Perl im Variantenverhalten der integrierten Funktionen in Listen- und Skalarkontexten, indem sie sagen: "Im Allgemeinen tun sie das, was Sie wollen, es sei denn, Sie möchten Konsistenz."[77]

Kein geschrieben Spezifikation oder Standard für die Perl -Sprache gibt es für Perl -Versionen über Perl 5, und es gibt keine Pläne, eine für die aktuelle Version von Perl zu erstellen. Es gab nur eine Implementierung des Dolmetschers, und die Sprache hat sich zusammen mit ihm weiterentwickelt. Dieser Dolmetscher steht zusammen mit seinen Funktionstests als de facto Spezifikation der Sprache. Perl 6 begann jedoch mit einer Spezifikation,[78] und mehrere Projekte[79] Ziel ist es, einige oder die gesamte Spezifikation zu implementieren.

Anwendungen

Perl verfügt über viele und unterschiedliche Anwendungen, die durch die Verfügbarkeit vieler Standard- und Drittanbietermodule verstärkt werden.

Perl wurde hauptsächlich zum Schreiben verwendet CGI Skripte: Große Projekte, die in Perl geschrieben wurden CPANEL, Schrägstrich, Bugzilla, Rt, Twiki, und Beweglicher Typ; Hochverkehrswebsites, die Perl ausgiebig verwenden Priceline.com, Craigslist,[80] IMDB,[81] LiveJournal, Duckduckgo,[82][83] Slashdot und Ticketmaster. Es ist auch eine optionale Komponente des beliebten LAMPE Technologiestapel für Web Entwicklunganstelle von Php oder Python. Perl wird ausgiebig als Systemprogrammiersprache in dem Debian Linux Verteilung.[84]

Perl wird oft als verwendet KleberspracheSysteme und Schnittstellen, die nicht speziell für die Zusammenarbeit und für "konzipiert waren"Datenmagel, "[85] Das heißt, die Umwandlung oder Verarbeitung großer Datenmengen für Aufgaben wie Erstellen von Berichten. Tatsächlich sind diese Stärken eng miteinander verbunden. Die Kombination macht Perl zu einer beliebten Allzwecksprache für Systemadministratoren, insbesondere weil kurze Programme, oft als genannt "Ein-Liner-Programme, "kann eingetragen werden und auf einer einzigen ausgeführt werden Befehlszeile.

Perl -Code kann tragbar gemacht werden Fenster und Unix; Ein solcher Code wird häufig von Lieferanten von Software verwendet (beide Kinderbetten und maßgeschneidert) zur Vereinfachung der Verpackung und Wartung von Software-Build- und Bereitstellungsschriften.

Perl/tk und wxperl werden üblicherweise zum Hinzufügen verwendet Grafische Benutzeroberflächen zu Perl Skripten.

Implementierung

Perl wird als Kerninterpreter implementiert, geschrieben in C, zusammen mit einer großen Sammlung von Modulen, die bis 2010 in Perl und C geschrieben wurdenDer Dolmetscher beträgt 150.000 Zeilen C -Code und kompiliert für typische Maschinenarchitekturen zu einer 1 MB ausführbaren Datei. Alternativ kann der Dolmetscher in eine Linkbibliothek zusammengestellt und in andere Programme eingebettet werden. Es gibt fast 500 Module in der Verteilung, die 200.000 Zeilen Perl und weitere 350.000 Zeilen C -Code umfassen (ein Großteil des C -Codes in den Modulen besteht aus Zeichenkodierung Tische).

Der Dolmetscher verfügt über eine objektorientierte Architektur. Alle Elemente der Perl -Sprache - Scalars, Arrays, Hashes, Coderefs, Dateigriffe- sind im Dolmetscher vertreten von C Strukturen. Operationen auf diesen Strukturen werden durch eine große Sammlung von definiert Makros, Typedefsund Funktionen; Diese bilden die Perl C. API. Die Perl -API kann für die Uneingeweihten verwirrt sein, aber ihre Einstiegspunkte folgen einer konsistenten Namensschema, was Anleitung für diejenigen bietet, die es verwenden.

Die Lebensdauer eines Perl -Dolmetschers unterteilt sich weitgehend in eine Kompilierungsphase und eine Laufphase.[86] In Perl, die Phasen sind die wichtigsten Phasen im Lebenszyklus des Dolmetschers. Jeder Interpreter durchläuft nur einmal durch jede Phase, und die Phasen folgen in einer festen Reihenfolge.

Das meiste, was in der Kompilierungsphase von Perl passiert, ist die Zusammenstellung, und das meiste, was in Perls Laufphase passiert, ist die Ausführung, es gibt jedoch erhebliche Ausnahmen. Perl nutzt seine Fähigkeit, Perl Code während der Kompilierungsphase auszuführen. Perl verzögert auch die Zusammenstellung in die Laufphase. Die Begriffe, die die Art der Verarbeitung angeben, die tatsächlich zu jedem Zeitpunkt auftritt, sind Zeit kompilieren und Laufzeit. Perl ist in den meisten Punkten während der Kompilierungsphase in Kompilierungszeit, aber während der Laufphase kann auch die Kompilierungszeit eingegeben werden. Die Kompilierungszeit für Code in einem String -Argument, das an das übergeben wurde bewerten Eingebautes tritt während der Laufphase auf. Perl befindet sich während der Kompilierungsphase oft in der Laufzeit und verbringt den größten Teil der Laufphase in der Laufzeit. Code in START Blöcke werden zur Laufzeit ausgeführt, aber in der Kompilierungsphase.

Zum Kompilierzeit analysiert der Interpreter Perl -Code in a Syntaxbaum. Zur Laufzeit wird das Programm von ausgeführt mit dem Baum gehen. Der Text wird nur einmal analysiert, und der Syntaxbaum unterliegt der Optimierung, bevor er ausgeführt wird, sodass die Ausführung relativ effizient ist. Kompilierzeitoptimierungen am Syntaxbaum enthalten Konstante Faltung und Kontextverbreitung, aber Gucklochoptimierung wird auch durchgeführt.[87]

Perl hat a Turing-Complete Grammatik Da die Parsen durch Laufzeitcode beeinflusst werden kann, der während der Kompilierungsphase ausgeführt wird.[88] Daher kann Perl nicht von einem Geraden analysiert werden Lex/Yacc Lexer/Parser Kombination. Stattdessen implementiert der Dolmetscher seinen eigenen Lexer, der mit einem modifizierten Koordinat Gnu Bison Parser, um Unklarheiten in der Sprache zu lösen.

Es wird oft gesagt, dass "nur Perl Perl analysieren kann", "[89] was bedeutet, dass nur der Perl -Dolmetscher (Perl) kann die Perlsprache analysieren (Perl), aber selbst das ist im Allgemeinen nicht wahr. Da der Perl -Dolmetscher eine Turing -Maschine während seiner Kompilierungsphase simulieren kann, müsste er die entscheiden Problem stoppen Um die Parsen in jedem Fall zu vervollständigen. Es ist ein langjähriges Ergebnis, dass das Ansteckproblem nicht entscheidbar ist und daher nicht einmal Perl Perl analysieren kann. Perl trifft die ungewöhnliche Wahl, dem Benutzer in seiner eigenen Kompilierungsphase zugänglich zu sein. Die Kosten in Bezug auf die theoretische Reinheit sind hoch, aber praktische Unannehmlichkeiten scheinen selten zu sein.

Andere Programme, die sich verpflichten, Perl zu analysieren, wie z. Quellcode-Analysatoren und automatische Inentente, müssen nicht nur mit mehrdeutiger Behauptung kämpfen syntaktische Konstrukte aber auch mit dem Unentscheidbarkeit von Perl an Parsen im allgemeinen Fall. Adam KennedyDas PPI -Projekt konzentrierte sich auf das Parsen von Perl -Code als Dokument (beibehalten der Integrität als Dokument), anstatt Perl als ausführbarer Code zu analysieren (das nicht einmal Perl selbst kann). Es war Kennedy, der zuerst vermutete, dass "Parsing Perl unter dem" Stoßproblem "leidet", "[90] was später bewiesen wurde.[91]

Perl wird mit über 250.000 verteilt Funktionstests Für Kernsprache und über 250.000 Funktionstests für Kernmodule. Diese laufen als Teil des normalen Build -Prozesses und üben den Dolmetscher und seine Kernmodule ausgiebig aus. Perl -Entwickler verlassen sich auf die Funktionstests, um sicherzustellen, dass Änderungen des Dolmetschers nicht einführen Software -Fehler; Darüber hinaus können Perl -Benutzer, die sehen, dass der Dolmetscher seine Funktionstests an ihrem System besteht, ein hohes Maß an Vertrauen, dass er ordnungsgemäß funktioniert.

Verfügbarkeit

Perl ist Dual lizenziert unter beiden Künstlerische Lizenz 1.0[5][6] und die GNU Allgemeine öffentliche Lizenz.[7] Verteilungen sind für die meisten verfügbar Betriebssysteme. Es ist besonders weit verbreitet auf Unix und Unix-artig Systeme, aber es wurde auf die meisten modernen (und viele veraltete) Plattformen portiert. Mit nur sechs gemeldeten Ausnahmen kann Perl zusammengestellt werden Quellcode auf alle Posix-Compliant oder anderweitig unmix-kompatibel Plattformen.[92]

Wegen ungewöhnlicher Änderungen für die erforderliche Klassischer Mac OS Umwelt, ein spezieller Hafen namens MacPerl wurde unabhängig versendet.[93]

Das Umfassendes Perl Archivnetzwerk trägt eine vollständige Liste unterstützter Plattformen mit Links zu den jeweils verfügbaren Verteilungen.[94] CPAN ist auch die Quelle für öffentlich verfügbare Perl -Module, die nicht Teil der Kern -Perl -Verteilung sind.

Fenster

Benutzer von Microsoft Windows Installieren Sie in der Regel eine der nativen Binärverteilungen von Perl für Win32 am häufigsten Strawberry Perl oder ActivePerl. Das Kompilieren von Perl aus dem Quellcode unter Windows ist möglich, aber den meisten Installationen fehlt der erforderliche C -Compiler- und Build -Tools. Dies macht es auch schwierig, Module aus der CPAN zu installieren, insbesondere solche, die teilweise in C geschrieben sind

ActivePerl ist eine Verteilung mit geschlossener Quelle von Aktivität Dies hat regelmäßige Veröffentlichungen, die die Kernveröffentlichungen verfolgen.[95] Die Verteilung enthielt zuvor die Perl Paketmanager (Ppm),[96] ein beliebtes Tool zum Installieren, Entfernen, Aufrüsten und Verwalten der Verwendung gemeinsamer Perlmodule; Dieses Tool wurde jedoch ab ActivePerl 5.28 eingestellt.[97] Auch enthalten ist Perlscript, a Windows -Skript -Host (WSH) Engine, die die Perl -Sprache implementiert. Visuelle Perl ist ein Aktivitätstool, das Perl zur Visual Studio .NET Development Suite hinzufügt. EIN Vbscript-To-perl-Konverter sowie ein Perl-Compiler für Windows und Konverter von awk und sed Zu Perl wurden auch von dieser Firma produziert und in der enthalten Aktivitäts -CD für Windows, einschließlich aller ihrer Verteilungen plus die Komodo ide und alle außer der ersten auf der Unix/Linux/POSIX -Variante davon im Jahr 2002 und anschließend.[98]

Strawberry Perl ist eine Open-Source-Verteilung für Windows. Seit Januar 2008 wurden regelmäßige vierteljährliche Veröffentlichungen durchgeführt, einschließlich neuer Module als Feedback und Anfragen. Strawberry Perl zielt darauf ab, Module wie Standard -Perl -Verteilungen auf anderen Plattformen zu installieren, einschließlich der Zusammenstellung von XS -Modulen.

Das Cygwin Die Emulationsschicht ist eine weitere Möglichkeit, Perl unter Windows auszuführen. Cygwin bietet eine Unix-ähnliche Umgebung unter Windows, und sowohl Perl als auch CPAN sind im Cygwin-Setup-Programm als Standardpakete vorbereitet. Da Cygwin auch einbezieht GCCDas Kompilieren von Perl aus der Quelle ist ebenfalls möglich.

Eine Perl -ausführbare Datei ist in mehreren Windows -Ressourcen -Kits im Verzeichnis mit anderen Skriptwerkzeugen enthalten.

Implementierungen von Perl kommen mit dem MKS Toolkit, Interix (die Basis früherer Implementierungen von Windows -Dienste für UNIX), und DU GEWINNST.

Datenbankschnittstellen

Perls Texthandling-Funktionen können zum Erzeugen verwendet werden Sql Abfragen; Arrays, Hashes und automatische Speicherverwaltung machen es einfach, die zurückgegebenen Daten zu sammeln und zu verarbeiten. Zum Beispiel bei Tim Bunce's Perl dbi Programmierschnittstelle (API), die Argumente an die API können der Text von SQL -Abfragen sein; Somit ist es möglich, gleichzeitig in mehreren Sprachen zu programmieren (z. B. zur Generierung a Website Verwendung Html, JavaScriptund SQL in a Hier Dokument). Die Verwendung von Perl Variable Interpolation So programmgesteuert die SQL -Abfragen und die Spezifikation von Perl -Arrays oder Hashes als Strukturen so anpassen Datensätze Aus jeder SQL-Abfrage ermöglicht ein hochrangiger Mechanismus zum Umgang mit großen Datenmengen für die Nachbearbeitung durch ein Perl-Unterprogramm.[99] In frühen Versionen von Perl wurden Datenbankschnittstellen erstellt, indem der Dolmetscher mit a wiedergearbeitet wird Client-Seite Datenbankbibliothek. Dies war ausreichend schwierig, dass es nur für einige der wichtigsten und am weitesten verbreiteten Datenbanken durchgeführt wurde, und beschränkte die resultierenden Perl Ausführbare Datei, nur eine Datenbankschnittstelle gleichzeitig zu verwenden.[100]

In Perl 5 werden Datenbankschnittstellen durch Perl -DBI -Module implementiert. Das DBI-Modul (Datenbankschnittstelle) zeigt eine einzelne, datenbankunabhängige Schnittstelle zu Perl-Anwendungen, während die DBD-Module (Datenbanktreiber) die Details zum Zugriff auf 50 verschiedene Datenbanken verarbeiten; Für die meisten gibt es DBD -Treiber Ansi Sql Datenbanken.[101]

DBI bietet Caching für Datenbankgriffe und Abfragen, die die Leistung in langlebigen Ausführungsumgebungen wie z. B. erheblich verbessern können Mod Perl,[102] Helfen Slashdot -Effekt.[103]

In modernen Perl -Anwendungen, insbesondere diejenigen, die geschrieben werden Webrahmen wie zum Beispiel KatalysatorDas DBI -Modul wird oft indirekt über verwendet Objektrelationskenner wie zum Beispiel Dbix :: Klasse, Klasse :: dbi[104] oder Rose :: db :: Objekt[105] Dadurch werden SQL -Abfragen generiert und Daten transparent mit dem Anwendungsautor verarbeitet.[106]

Vergleichende Leistung

Das Computer mit Computersprachen -Benchmarks Spiel Vergleicht die Leistung von Implementierungen typischer Programmierprobleme in mehreren Programmiersprachen.[107] Die eingereichten Perl-Implementierungen erfolgen in der Regel zum oberen Ende des Speichernutzungsspektrums und ergeben unterschiedliche Geschwindigkeitsergebnisse. Perls Leistung im Benchmarks -Spiel ist typisch für interpretierte Sprachen.[108]

Große Perl -Programme beginnen langsamer als ähnliche Programme in kompilierten Sprachen, da Perl die Quelle jedes Mal kompilieren muss, wenn sie ausgeführt wird. In einem Vortrag bei der YAPC :: Europa 2005 Die Konferenz und der nachfolgende Artikel "A Timey Start", Jean-Louis Leroy, stellte fest, dass seine Perl-Programme viel länger als erwartet dauerten, da der Perl-Dolmetscher erhebliche Zeit damit verbrachte, Module in seinem überlebenden Pfad zu finden.[109] Im Gegensatz zu Java, Python und Ruby hat Perl nur eine experimentelle Unterstützung für Vorkompilieren.[110] Daher zahlen Perl -Programme diese Gemeindestrafe bei jeder Ausführung. Die Laufphase typischer Programme ist lang genug, dass amortisiert Die Startzeit ist nicht wesentlich, aber Benchmarks, die sehr kurze Ausführungszeiten messen, dürften aufgrund dieses Overheads verzerrt werden.[111]

Eine Reihe von Tools wurde eingeführt, um diese Situation zu verbessern. Das erste solche Tool war Apache's Mod Perl, was versucht hat, einen der am meisten vertretensten Gründe anzugehen, warum kleine Perl-Programme schnell angerufen wurden: CGI Netz Entwicklung. ActivePerl, über Microsoft Isapibietet ähnliche Leistungsverbesserungen.[112]

Sobald der Perl -Code kompiliert ist, gibt es während der Ausführungsphase zusätzliche Overheads, die normalerweise nicht für Programme in kompilierten Sprachen wie C oder C ++ vorhanden ist. Beispiele für einen solchen Gemeinkosten sind Bytecode Interpretation, Referenzbeziehungsgedächtnismanagement und dynamisches Typ-Überprüfungen.[113]

Optimierung

Die kritischsten Routinen können in anderen Sprachen geschrieben werden (wie z. C), die über einfache Inline -Module oder die komplexeren, aber flexibler mit Perl angeschlossen werden können. Xs Mechanismus.[114]

Perl 5

Perl 5, die Sprache, die normalerweise als "Perl" bezeichnet wird, wird weiterhin aktiv entwickelt. Perl 5.12.0 wurde im April 2010 mit einigen neuen Funktionen veröffentlicht, die vom Design von Perl 6 beeinflusst wurden.[48][115] gefolgt von Perl 5.14.1 (veröffentlicht am 17. Juni 2011), Perl 5.16.1 (veröffentlicht am 9. August 2012.[116]) und Perl 5.18.0 (veröffentlicht am 18. Mai 2013). Perl 5 -Entwicklungsversionen werden monatlich veröffentlicht, wobei die wichtigsten Veröffentlichungen einmal pro Jahr veröffentlicht werden.[117]

Der relative Anteil des Internets sucht nach "Perl -Programmierung" im Vergleich zu ähnlichen Suchanfragen nach anderen Programmiersprachen stetig von etwa 10% im Jahr 2005 auf etwa 2% im Jahr 2011 und auf etwa 0,7% im Jahr 2020.[118]

Raku (Perl 6)

Kamelien, das Logo für das Perl 6 -Projekt[119]

Im Jahr 2000 Perl -Konferenz, Jon Orwant machte einen Fall für eine große neue Sprachinitiative.[120] Dies führte zu einer Entscheidung, mit der Arbeit an einer Neugestaltung der Sprache zu beginnen, die als Perl 6 bezeichnet wurde. RFCs.[121]

Wall verbrachte die nächsten Jahre damit, die RFCs zu verdauen und sie in einen kohärenten Rahmen für Perl 6 zu synthetisieren Programmierung perl. Ab Januar 2011Die sich entwickelnde Spezifikation von Perl 6 wurde in Entwurfsdokumenten, die als Synopsen bezeichnet werden, eingekapselt - nummeriert, um Apokalypsen zu entsprechen.[122]

Diplomarbeit von Bradley M. Kuhn, überwacht von der Wand, betrachtete die mögliche Verwendung der Java virtuelle Maschine als Laufzeit für Perl.[123] Kuhns These zeigte, dass dieser Ansatz problematisch war. Im Jahr 2001 wurde beschlossen, dass Perl 6 auf einer Vernetzung laufen würde virtuelle Maschine genannt Papagei. Dies bedeutet, dass andere Sprachen, die auf den Papagei abzielen CPAN, was ein gewisses Maß an Verzugsentwicklung ermöglicht.

Im Jahr 2005, Audrey Tang erstellt die Mops Projekt, eine Implementierung von Perl 6 in Haskell. Dies fungierte als Testplattform für die Perl 6 -Sprache (getrennt von der Entwicklung der tatsächlichen Implementierung) - und ermöglicht es den Sprachdesignern, zu erforschen. Das Pugs-Projekt brachte eine aktive Perl/Haskell-Cross-Language-Gemeinde hervor Libera Chat #Raku IRC -Kanal. Viele Funktionelle Programmierung Einflüsse wurden vom Perl 6 Designteam aufgenommen.[124]

Im Jahr 2012 konzentrierte sich die Perl 6 -Entwicklung hauptsächlich auf zwei Compiler:[125]

  1. Rakudo, eine Implementierung, die auf der virtuellen Papagei und der Java Virtual Machine ausgeführt wird.[126]
  2. Niecza, was auf die abzielt Gemeinsame Sprachlaufzeit.

Im Jahr 2013, Moarvm („Metamodell auf einer Laufzeit“), ein sprachbasiertes C virtuelle Maschine In erster Linie für Rakudo wurde bekannt gegeben.[127]

Im Oktober 2019 wurde Perl 6 in Raku umbenannt.[128]

Ab 2017 Nur die Rakudo -Implementierung und MOARVM stehen aktiv und andere virtuelle Maschinen wie die virtuelle Java -Maschine und Java JavaScript, sind unterstützt.[129]

Perl 7

Perl 7 wurde am 24. Juni 2020 auf der "Perl Conference in the Cloud" als Nachfolger von Perl 5 angekündigt.[63][62] Basierend auf Perl 5.32 sollte Perl 7 sein rückwärtskompatibel mit modernem Perl 5 -Code; Perl 5 Code ohne Kesselplatte (Pragma) Header muss hinzugefügt werden Verwenden Sie Compat :: Perl5; Um kompatibel zu bleiben, aber moderner Code kann einen Teil des Kesselplattens fallen lassen.

Der Plan, zu Perl 7 zu gehen, führte jedoch mehr Diskussionen, und das Perl -Lenkungsausschuss hat ihn abgesagt, um Probleme mit Rückwärtskompatibilität für Skripte zu vermeiden, die nicht an die Pragmas und Module geschrieben wurden, die in Perl 7 der Standard werden würden Kommen Sie nur heraus, wenn die Entwickler genügend Funktionen hinzufügen, um ein größeres Release -Upgrade zu rechtfertigen.[130]

Perl Community

Perls Kultur und Gemeinschaft haben sich neben der Sprache selbst entwickelt. Usenet war der erste öffentliche Veranstaltungsort, an dem Perl eingeführt wurde, aber im Verlauf seiner Entwicklung war Perls Community vom Wachstum der Erweiterung der internetbasierten Dienste geprägt, einschließlich der Einführung des World Wide Web. Die Gemeinschaft, die Perl umgibt, war in der Tat das Thema des ersten "Zustands der Zwiebel" von Wall.[131]

Zustand der Zwiebel

Der Zustand der Zwiebel ist der Name für Walls jährlich Keynote-Stil Zusammenfassungen zum Fortschritt von Perl und seiner Gemeinschaft. Sie zeichnen sich durch seinen hallmarkischen Humor aus und verwenden Hinweise auf Perls Kultur, die breitere Hacker -Kultur, den sprachlichen Hintergrund von Wall, manchmal sein Familienleben und gelegentlich sogar seinen christlichen Hintergrund.[132]

Jeder Vortrag wird zunächst auf verschiedenen Perlkonferenzen gehalten und schließlich auch online veröffentlicht.

Perl Zeitvertreibe

Japhs

In Postings in E -Mail-, Usenet- und Message Board ","Nur ein anderer Perl -Hacker"(JHAPH) -Programme sind ein gemeinsamer Trend, der von entstanden ist von Randal L. Schwartz, einer der frühesten professionellen Perl -Trainer.[133] In der Parlanz der Perl -Kultur sind Perl -Programmierer als Perl -Hacker bekannt, und daraus leitet die Praxis, kurze Programme zu schreiben, um den Ausdruck "nur ein weiterer Perl -Hacker" auszudrucken. Im Geiste des ursprünglichen Konzepts sind diese Programme mäßig verschleiert und kurz genug, um in die Signatur einer E -Mail- oder Usenet -Nachricht zu passen. Der von Schwartz entwickelte "kanonische" JHAPH enthält am Ende das Komma, obwohl dies oft weggelassen wird.[134]

Perl Golf

Perl "Golf" ist der Zeitvertreib, die Anzahl der Zeichen (Schlüsselstriche ") zu reduzieren, die in einem Perl -Programm auf das nötige Minimum verwendet werden, ähnlich wie Golf Die Spieler versuchen, in einer Runde so wenig Schüsse wie möglich zu machen. Der erste Gebrauch der Phrase[135] betonte den Unterschied zwischen Fußgängercode, der einen Neuling und knappe Hacks unterrichten soll, die wahrscheinlich erfahrene Perl -Programmierer amüsieren, ein Beispiel dafür, dass letzteres ist Japhs Das wurden bereits in Signaturen in Usenet -Postings und anderswo verwendet. Ähnliche Stunts waren ein unbenannter Zeitvertreib in der Sprache gewesen Apl In den vergangenen Jahrzehnten. Die Verwendung von Perl zum Schreiben eines Programms, das durchgeführt wurde RSA Die Verschlüsselung führte zu einem weit verbreiteten und praktischen Interesse an diesem Zeitvertreib.[136] In den folgenden Jahren der Begriff "Code Golf"wurde in anderen Sprachen auf den Zeitvertreib angewendet.[137] Eine Perl Golf -Apokalypse fand im Juli 2000 auf der Perl Conference 4.0 in Monterey, Kalifornien, statt.

Verschleierung

Wie bei C, verschleierter Code Die Wettbewerbe waren Ende der neunziger Jahre ein bekannter Zeitvertreib. Das Verschleierter Perl -Wettbewerb war ein Wettbewerb des Perl Journal von 1996 bis 2000, der eine Bogenflexibilität von Perls syntaktischer Flexibilität machte. Für Kategorien wie "mächtigste" wurden Auszeichnungen vergeben, die den Raum effizient nutzten-und "beste vierzeilige Signatur" für Programme, die in vier Zeilen von 76 Zeichen im Stil eines Usenet passen Signaturblock.[138]

Poesie

Perl Poesie ist die Praxis des Schreibens von Gedichten, die als legaler Perl -Code zusammengestellt werden können, zum Beispiel das bekannte Stück als Schwarz Perl. Perl Poesie wird durch die große Anzahl englischer Wörter ermöglicht, die in der Perl -Sprache verwendet werden. Neue Gedichte werden regelmäßig der Community unter übermittelt Perlmonks.[139]

Perl auf IRC

Eine Anzahl von IRC Kanäle bieten Unterstützung für Perl und einige seiner Module.

IRC -Netzwerk Kanäle
irc.libera.chat #perl #raku
irc.perl.org #moose #poe #catalyyst #dbix-class #perl-help #distzilla #epo #corehackers #sdl #win32 #toolchain #padre #dancer
irc.slashnet.org #perlmonks
irc.oftc.net #Perl #Debian-Perl (Verpackungs-Perl-Module für Debian)
irc.efnet.net #perlhelp
irc.rizon.net #Perl

CPAN ACME

Es gibt auch viele Beispiele für Code, die nur zur Unterhaltung auf der Unterhaltung geschrieben wurden CPAN. Lingua :: Romana :: PerligataErmöglicht beispielsweise das Schreiben von Programmen in Latein.[140] Nach Ausführung eines solchen Programms übersetzt das Modul seinen Quellcode in reguläre Perl und führt ihn aus.

Die Perl -Community hat die "beiseite gelegt"Gipfel"Namespace für Module, die Spaß an der Natur haben (aber sein Umfang hat sich erweitert, um explorative oder experimentelle Code oder ein anderes Modul zu enthalten, das nicht in der Produktion verwendet werden soll). Einige der ACME -Module werden bewusst auf amüsante Weise implementiert. Diese Art. Diese Art. Diese Art. Diese Art. Diese Art. Diese Art. Diese Art. Diese Art. Diese Art. inklusive Acme :: Bleach, einer der ersten Module in der Gipfel:: Namespace,[141] Dadurch kann der Quellcode des Programms "weiß" sein (d. H. Alle Zeichen, die durch Whitespace ersetzt werden) und dennoch funktionieren dennoch.

Beispielcode

In älteren Versionen von Perl würde man die schreiben Hallo Welt Programm als:

drucken "Hallo Welt! \ N"; 

Hier ist ein komplexeres Perl -Programm, das Sekunden von einem bestimmten Startwert zählt:

#!/usr/bin/perl verwenden strikt; verwenden Warnungen; mein ( $ verbleibend, $ insgesamt ); $ verbleibend = $ insgesamt = Wechsel(@Argv); Stdout->Autoflush(1); während ( $ verbleibend ) {  printf ( "Rest %s/ %s \ r", $ verbleibend--, $ insgesamt );  schlafen 1; } drucken "\n"; 

Der Perl-Interpreter kann auch für einmalige Skripte in der Befehlszeile verwendet werden. Das folgende Beispiel (wie aus einer SH-kompatiblen Shell wie Bash aufgerufen) übersetzt die Zeichenfolge "Bob" in allen Dateien, die mit .txt im aktuellen Verzeichnis "Robert" enden:

$ perl -i.bak -lp -e 's/bob/robert/g' *.txt

Kritik

Perl wurde als "Linienrauschen" und a bezeichnet Nur-Schreibsprache von seinen Kritikern. Die früheste Erwähnung war in der ersten Ausgabe des Buches Perl lernen, ein Perl 4 -Tutorialbuch von geschrieben von Randal L. Schwartz,[142] In dem ersten Kapitel, in dem er sagt: "Ja, manchmal sieht Perl wie Liniengeräusch für Uneingeweihte aus, aber für den erfahrenen Perl -Programmierer sieht es so aus, als würde es mit einer Mission im Leben überprüft werden.[143] Er erklärte auch, dass die Anschuldigung, dass Perl eine Nur-Schreibsprache ist, durch Codierung mit "richtiger Pflege" vermieden werden könne.[143] Das Perl -Übersichtsdokument Perlintro stellt fest, dass die Namen des eingebauten "Magic" -Skalarars Variablen "Sehen Sie aus wie Interpunktion oder Line -Rauschen".[144] Das englische Modul bietet jedoch sowohl lange als auch kurze englische Alternativen. Perlstyle Dokument gibt an, dass Leitungsrauschen in regulären Ausdrücken mit dem gemindert werden könnte /x Modifikator zum Hinzufügen von Whitespace.[145]

Laut dem Perl 6 FAQ, Perl 6 wurde entwickelt, um "die üblichen Verdächtigen" zu mildern, die den "Linienrauschen" -Anspruch von Perl 5 -Kritikern hervorrufen, einschließlich der Entfernung der Mehrheit der Interpunktionsvariablen und der Sanitisierung der Regex -Syntax.[146] Das Perl 6 FAQ stellt auch fest, dass das, was manchmal als Perls Zeilenrauschen bezeichnet wird, "die tatsächliche Syntax der Sprache" ist Gerunds und Präpositionen sind ein Teil der Englische Sprache.[146] In einer Blog -Posting im Dezember 2012, obwohl sie behauptet, "Rakudo Perl 6 sei fehlgeschlagen und wird weiterhin scheitern, es sei denn, es wird eine Aufsicht von Erwachsenen aufgenommen", ist es nicht gescheitert. chromatisch stellte fest, dass das Design von Perl 6 eine "genau definierte Grammatik" sowie ein "verbessertes Typsystem, ein einheitliches Objektsystem mit einem intelligenten Metamodel, Metaoperatoren und ein klareres Kontextsystem hat, das solche Feinheiten wie nennenswerte Faulheit liefert" .[147] Er erklärte auch, dass "Perl 6 eine Kohärenz und eine Konsistenz hat, die Perl 5 fehlt".[147]

Siehe auch

Verweise

  1. ^ a b "V13I001: Perl, ein" Ersatz "für awk und sed, part01/10". Comp.Sources.unix Archive. Abgerufen 11. August, 2021.
  2. ^ "Perl 5.36.0 ist jetzt verfügbar". www.nntp.perl.org. Abgerufen 30. Mai, 2022.
  3. ^ "Perl 5.34.1 ist jetzt verfügbar!". www.nntp.perl.org. Abgerufen 13. März, 2022.
  4. ^ "Perl 5.37.0 ist jetzt verfügbar". www.nntp.perl.org. Abgerufen 30. Mai, 2022.
  5. ^ a b "Die" künstlerische Lizenz " - Dev.Perl.org". dev.perl.org. Archiviert Aus dem Original am 24. Juli 2018. Abgerufen 24. Juni, 2016.
  6. ^ a b Künstlerisch Archiviert 25. Juli 2018 bei der Wayback -Maschine - Datei auf dem Perl 5 Git -Repository
  7. ^ a b "Perl -Lizenzierung". dev.perl.org. Archiviert Aus dem Original am 22. Januar 2011. Abgerufen 8. Januar, 2011.
  8. ^ Larry Wall (12. Dezember 2007). "Programmierung ist schwer, lass uns skripting gehen ..." Archiviert Aus dem Original am 28. Juli 2017. Abgerufen 14. April, 2019. Alle Sprachdesigner haben gelegentliche Eigenheiten. Ich bin einfach besser darin als die meisten anderen.
  9. ^ "Über Perl". Perl.org. Archiviert vom Original am 6. November 2015. Abgerufen 20. April, 2013. "Perl" ist eine Sprachenfamilie, "Perl 6" ist Teil der Familie, aber es ist eine separate Sprache, die ein eigenes Entwicklungsteam hat. Seine Existenz hat keinen signifikanten Einfluss auf die kontinuierliche Entwicklung von "Perl 5".
  10. ^ "Weg nach Raku". Github. Archiviert vom Original am 12. November 2020. Abgerufen 14. Januar, 2021. In diesem Dokument werden die Schritte beschrieben
  11. ^ Lapworth, Leo. "Allgemeine Fragen zu Perl". Perl FAQ. Perl.org. Archiviert Aus dem Original am 28. Mai 2013. Abgerufen 24. Februar, 2012.
  12. ^ "Perl (1): Praktische Extraktions-/Berichtssprache - Linux Man Page". Linux.die.net. Archiviert Aus dem Original am 3. Juni 2013. Abgerufen 23. Juli, 2013.
  13. ^ Sheppard, Doug (16. Oktober 2000). "Anfänger Einführung in Perl". dev.perl.org. Archiviert Aus dem Original am 5. Juni 2011. Abgerufen 8. Januar, 2011.
  14. ^ Ashton, Elaine (1999). "Die Zeitleiste von Perl und seiner Kultur (v3.0_0505)". Archiviert Aus dem Original am 11. Januar 2013. Abgerufen 12. März, 2004.
  15. ^ a b c d Wand, Larry; Christiansen, Tom; Orwant, Jon (Juli 2000). Programmierung Perl, dritte Ausgabe. O'Reilly Media. ISBN 978-0-596-00027-1.
  16. ^ "Sprachbewertungen". Archiviert Aus dem Original am 10. März 2015. Abgerufen 30. Januar, 2015. Der stärkste Punkt von Perl sind die äußerst leistungsstarken integrierten Einrichtungen für die musterngesteuerte Verarbeitung textorientierter Datenformate. Es ist dabei unübertroffen.
  17. ^ "Sie haben Perl verwendet, um was zu schreiben?!". 24. Januar 2008. Archiviert Aus dem Original am 4. Februar 2015. Abgerufen 4. Februar, 2015. Perl war schon immer die Anlaufstelle für jede Aufgabe, bei der ein Musteranpassungseingang beinhaltet
  18. ^ "Die Bedeutung von Perl". Archiviert von das Original am 2. Februar 2015. Abgerufen 4. Februar, 2015. Perls beispiellose Fähigkeit, Text zu verarbeiten ...
  19. ^ Smith, Roderick W. (21. Juni 2002). Erweitertes Linux -Netzwerk. Addison-Wesley Professional. p.594. ISBN 978-0-201-77423-8.
  20. ^ Sheppard, Doug (16. Oktober 2000). "Anfänger Einführung in Perl". O'Reilly Media. Archiviert Aus dem Original am 4. Juni 2008. Abgerufen 27. Juli, 2008.
  21. ^ Raymond, Eric (23. Dezember 2003). "Schweizerische Kettensäge". Die Jargon -Datei. Archiviert Aus dem Original am 14. August 2018. Abgerufen 29. November, 2014.
  22. ^ Leonard, Andrew. "Die Freude an Perl". Salon.com. Archiviert Aus dem Original am 6. Juli 2012. Abgerufen 5. Juni, 2012.
  23. ^ "Wie Programme gemessen werden | Computersprach -Benchmarks -Spiel". Benchmarksgame-Team.Pages.debian.net. Archiviert Aus dem Original am 12. Juli 2020. Abgerufen 5. Oktober, 2020.
  24. ^ "RSA in 3 Zeilen Perl - Alles2.com". Alles2.com. Archiviert vom Original am 8. Oktober 2020. Abgerufen 5. Oktober, 2020.
  25. ^ Richardson, Marjorie (1. Mai 1999). "Larry Wall, der Guru von Perl". Linux Journal. Archiviert Aus dem Original am 20. Juli 2013. Abgerufen 3. Januar, 2011.
  26. ^ "Perlfaq1: Was ist der Unterschied zwischen" Perl "und" Perl "?". Perldoc.perl.org - Perl 5 Version 12.2 Dokumentation. Archiviert Aus dem Original am 30. Mai 2013. Abgerufen 4. Juni, 2007.
  27. ^ Schwartz, Randal; Foy, Brian; Phoenix, Tom (16. Juni 2011). Perl lernen. O'Reilly Media, Inc. p.4. ISBN 978-1449313142. Perl wird manchmal als "praktische Extraktions- und Berichtssprache" bezeichnet, obwohl sie unter anderem auch als "pathologisch vielseitiger Mülllister" bezeichnet wurde. Es ist eigentlich ein BackRonym, kein Akronym, da Larry Wall, Perls Schöpfer, zuerst den Namen und die Erweiterung später erfunden hat. Deshalb ist "Perl" nicht in allen Kappen. Es macht keinen Sinn zu argumentieren, dass die Expansion korrekt ist: Larry befürwortet beide.
  28. ^ Wand, Larry. "Perl - der Perl -Sprachdolmetscher". Perl 5 Version 12.2 Dokumentation. Archiviert Aus dem Original am 1. Juli 2013. Abgerufen 26. Januar, 2011.
  29. ^ "Perl.Perl5.porters Archiv". Perl.org. Archiviert Aus dem Original am 1. Mai 2011. Abgerufen 13. Januar, 2011.
  30. ^ a b "Perlhist - Die Perl History Records". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 13. Januar 2011. Abgerufen 21. Januar, 2011.
  31. ^ "Perl | Definition, Geschichte & Fakten | Britannica". www.britannica.com. Abgerufen 15. Juni, 2022.
  32. ^ "CPAN". CPAN. Archiviert Aus dem Original am 3. Oktober 2019. Abgerufen 8. Mai, 2017.
  33. ^ a b "Perl5004delta - Was ist neu für Perl5.004". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 27. Februar 2011. Abgerufen 8. Januar, 2011.
  34. ^ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl auf den Punkt gebracht, zweite Ausgabe. O'Reilly Media. ISBN 978-0-596-00241-1.
  35. ^ "Perl5005delta - Was ist neu für Perl5.005". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 3. Februar 2011. Abgerufen 21. Januar, 2011.
  36. ^ "Perl Quelle". www.cpan.org. Archiviert Aus dem Original am 1. Juni 2017. Abgerufen 2. Juni, 2020.
  37. ^ "Perl56delta - Was ist neu für Perl v5.6.0". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 2. Februar 2011. Abgerufen 21. Januar, 2011.
  38. ^ "Perl56delta - Was ist neu für Perl v5.6.x". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 18. November 2010. Abgerufen 21. Januar, 2011.
  39. ^ "Perl | Definition, Geschichte & Fakten | Britannica". www.britannica.com. Abgerufen 15. Juni, 2022.
  40. ^ Wand, Larry. "Apokalypse 1: Das Hässliche, das Schlechte und das Gute". Archiviert Aus dem Original am 23. November 2010. Abgerufen 8. Januar, 2011.
  41. ^ "Perl58delta - Was ist neu für Perl v5.8.0". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 21. November 2010. Abgerufen 21. Januar, 2011.
  42. ^ "Ein Plan für Mops". O'Reilly Media. 3. März 2005. Archiviert Aus dem Original am 8. September 2012. Abgerufen 27. Januar, 2011.
  43. ^ Tang, Audrey (21. April 2010). "Re: Wie man Perl 6 in zehn Jahren implementiert". Perlmonks. Archiviert Aus dem Original am 11. Mai 2011. Abgerufen 3. Januar, 2011.
  44. ^ Geoff Broadwell (8. August 2005), Oscon 4.4: Inside Ponie, die Brücke von Perl 5 bis Perl 6, O'Reilly Onlamp Blog, archiviert Aus dem Original am 14. März 2012, abgerufen 27. Juni, 2016
  45. ^ Jesse Vincent (23. August 2006), Ponie wurde auf die Weide gebracht, Die Perl Foundation, archiviert von das Original am 27. Juni 2009, abgerufen 15. Januar, 2019
  46. ^ "Perl5100Delta - Was ist neu für Perl 5.10.0". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 21. Dezember 2010. Abgerufen 8. Januar, 2011.
  47. ^ "Perlsyn - Perl Syntax". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 26. August 2013. Abgerufen 21. Januar, 2011.
  48. ^ a b "Perl5120Delta - Was ist neu für Perl v5.12.0". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 4. Januar 2011. Abgerufen 8. Januar, 2011.
  49. ^ "Perl5140Delta - Was ist neu für Perl v5.14.0 - metacpan.org". metacpan.org. Archiviert Aus dem Original am 25. Juli 2018. Abgerufen 22. Juli, 2017.
  50. ^ a b "Perl5160Delta - Was ist neu für Perl v5.16.0". perldoc.perl.org. Abgerufen 21. Mai, 2012.
  51. ^ "Perl5180Delta - Was ist neu für Perl v5.18.0 - Perl -Programmiersprache". Perl 5 Version 18.0 Dokumentation. metacpan.org. Archiviert Aus dem Original am 29. Oktober 2013. Abgerufen 27. Oktober, 2013.
  52. ^ "Perl5200Delta - Was ist neu für Perl v5.20.0 - Perl -Programmiersprache". Perl 5 Version 20.0 Dokumentation. metacpan.org. Archiviert Aus dem Original am 27. Mai 2014. Abgerufen 27. Mai, 2014.
  53. ^ Meilensteine ​​in der Perl Renaissance - moderne Perl -Programmierung Archiviert 27. Oktober 2012 bei der Wayback -Maschine. Modernperlbooks.com. Abgerufen am 2013-07-17.
  54. ^ Vorwort (Modern Perl 2011-2012) Archiviert 28. September 2012 bei der Wayback -Maschine. Modernperlbooks.com. Abgerufen am 2013-07-17.
  55. ^ Moderne Perl 2011-2012 Ausgabe von Chromatic | Onyx Neon Press Archiviert 22. Dezember 2011 bei der Wayback -Maschine. Onyxneon.com. Abgerufen am 2013-07-17.
  56. ^ "Erklärter Perl". Erleuchtete Perl. Archiviert von das Original am 5. Februar 2014. Abgerufen 28. September, 2012.
  57. ^ "YAPC :: NA 2013 - 3. bis 5. Juni, Austin, Texas". Yapcna.org. 4. Juni 2013. Archiviert von das Original am 22. Juni 2013. Abgerufen 11. April, 2014.
  58. ^ Little, Stevan (8. Februar 2013). "Was ist Moe (eine Klärung) | Stevan Little". Blogs.perl.org. Archiviert Aus dem Original am 19. Dezember 2013. Abgerufen 11. April, 2014.
  59. ^ "P2 am Trank". Perl11.org. 7. Februar 2004. Archiviert Aus dem Original am 24. September 2013. Abgerufen 11. April, 2014.
  60. ^ "Goccy/Gperl 路 Github". Github.com. Archiviert Aus dem Original am 23. Februar 2015. Abgerufen 11. April, 2014.
  61. ^ "Rperl". Rperl.org. Archiviert Aus dem Original am 18. Oktober 2014. Abgerufen 11. August, 2014.
  62. ^ a b "Perl 7 kündigte auf der Perl Conference in the Cloud angekündigt.". Perlfoundation.org. 24. Juni 2020. Archiviert vom Original am 26. Juni 2020. Abgerufen 24. Juni, 2020.
  63. ^ a b "Perl 7 ankündigen". Perl.com. 24. Juni 2020. Archiviert vom Original am 24. Juni 2020. Abgerufen 24. Juni, 2020.
  64. ^ Nicholas Clark (9. Mai 2021). "Lenkungsratssitzung #019 2021-05-06". www.nntp.perl.org. Archiviert Aus dem Original am 18. Mai 2021. Abgerufen 17. Mai, 2021. Der Plan bleibt, dass es eine Perl 7 -Beule geben wird, jedoch nicht unmittelbar nach 5,34,0. ... Wir glauben nicht, dass wir in 12 Monaten [Perl 7] liefern können.
  65. ^ Vorbereitung auf Perl 7d. Leanpub.com. 24. Juni 2020. Archiviert vom Original am 25. Juni 2020. Abgerufen 24. Juni, 2020.
  66. ^ a b Schwartz, Randal L.; Phoenix, Tom; Foy, Brian (6. Dezember 2007). Lernen Perl, dritte Ausgabe. ISBN 978-0-596-00132-2.
  67. ^ a b "Die Nutzung von Perl Camel und Markeninformationen". O'Reilly Media. Archiviert von das Original am 25. April 2018. Abgerufen 9. Januar, 2011.
  68. ^ "Perl Markenzeichen". Die Perl Foundation. Archiviert von das Original am 3. Mai 2011. Abgerufen 9. Januar, 2011.
  69. ^ Gillmore, Dan (25. Oktober 1998). "Republik Perl". Chicago Tribune. Archiviert Aus dem Original am 30. April 2011. Abgerufen 10. Januar, 2011.
  70. ^ Riedel, Sebastian (18. Januar 2012). "Perl 5 Raptor". Sebastian Riedel. Archiviert Aus dem Original am 11. Juni 2018. Abgerufen 12. November, 2017.
  71. ^ Trout, Matt (16. Juni 2005). "Zustand des Velociraptors - Phase zwei". Shadowcat Systems Limited. Archiviert vom Original am 13. November 2017. Abgerufen 12. November, 2017.
  72. ^ Nagpal, D.P. (2010). Webdesign -Technologie. Indien: S. Chand. p. 700. ISBN 978-8121927635.
  73. ^ "Titel unbekannt". 10. Mai 1997. Usenet: [email protected].[Dead Link]
  74. ^ "Der Fall von Perl, die vielversprechendste Sprache des Webs". Fastcompany. 13. Februar 2014.
  75. ^ Wand, Larry. "Perl - Der Perl 5 -Sprache -Interpreter - Perldoc -Browser". perldoc.perl.org. Abgerufen 24. Juni, 2021.
  76. ^ Wall, Larry (1. März 1997). "Warum Kunst, du?". Linux Journal. Archiviert Aus dem Original am 9. Dezember 2010. Abgerufen 13. März, 2011.
  77. ^ "Perlfunc - Perl gebaute Funktionen". Perl 5 Version 12.2 Dokumentation. perldoc.perl.org. Archiviert Aus dem Original am 6. Januar 2011. Abgerufen 10. Januar, 2011.
  78. ^ "Perl 6 Spezifikation". Das Perl 6 -Projekt. Archiviert Aus dem Original am 2. Dezember 2009. Abgerufen 27. Januar, 2011.
  79. ^ "Perl 6 Compiler". Das Perl 6 -Projekt. Archiviert Aus dem Original am 2. Dezember 2009. Abgerufen 27. Januar, 2011.
  80. ^ Gilmore, W. J. (2010). Beginn von PHP und MySQL: Vom Anfänger zum professionellen, vierten Ausgabe. Apress. p.484. ISBN 978-1-4302-3114-1.
  81. ^ "IMDB Helpdesk: Mit welcher Software/Hardware werden die Website ausgeführt?". Internet-Filmdatenbank. Archiviert Aus dem Original am 9. März 2017. Abgerufen 12. Februar, 2011.
  82. ^ Duckduckgo behandelt eine große Anzahl von Suchanfragen bei 4,5 Millionen Abfragen pro Tag. https://duckduckgo.com/traffic.html Archiviert 15. Februar 2012 bei der Kongressbibliothek Webarchive
  83. ^ Duckduckgo verwendet Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duckduck-go-go-architecture.html
  84. ^ "Perl FAQ". Archiviert Aus dem Original am 6. August 2019. Abgerufen 6. August, 2019. Perl wird in Debian ziemlich ausführlich verwendet. Einige Kernfunktionen sind nicht nur in Perl geschrieben, sondern es gibt auch über 700 Pakete in instabiler Perl, die Perl in ihrem Namen haben (März 2004).
  85. ^ "Perl Bücher - Buch: Datenmagel mit Perl". Perl.org. Archiviert Aus dem Original am 7. September 2011. Abgerufen 30. Dezember, 2010.
  86. ^ Eine Beschreibung des Perl 5 -Dolmetschers kann in gefunden werden Programmierung perl, 3. Aufl., Kapitel 18. Siehe insbesondere Seite 467, der die Laufphase sorgfältig unterscheidet und die Phase kompiliert Laufzeit und Zeit kompilieren. Perl "Zeit" und "Phase" sind oft verwirrt.
  87. ^ "Perlguts - Einführung in die Perl -API - Perldoc -Browser". perldoc.perl.org. Abgerufen 24. Januar, 2022.
  88. ^ Schwartz, Randal. "Perl analysieren". Archiviert Aus dem Original am 27. September 2007. Abgerufen 3. Januar, 2007.
  89. ^ "The Perl Journal #19/9.26" (PDF). O'Reilly Media. Abgerufen 4. Februar, 2011.
  90. ^ Kennedy, Adam (2006). "PPI - Parse, analysieren und manipulieren Sie Perl (ohne Perl)". CPAN. Archiviert Aus dem Original am 3. September 2013. Abgerufen 16. September, 2013.
  91. ^ "Rice's Theorem". Die Perl -Bewertung. 4 (3): 23–29. Sommer 2008. und "Perl ist unentscheidbar". Die Perl -Bewertung. 5: 7–11. Herbst 2008., online erhältlich unter Kegler, Jeffrey. "Perl und Unentschlossenheit". Archiviert Aus dem Original am 17. August 2009 2009. Abgerufen 4. Januar, 2009.
  92. ^ Hietaniemi, Jarkko (1998). "Perl Ports (Binärverteilungen)". Cpan.org. Archiviert Aus dem Original am 18. April 2006. Abgerufen 16. April, 2006.
  93. ^ "Die MacPerl -Seiten". Prime Time Freeware. 1997. Archiviert Aus dem Original am 18. Januar 2006. Abgerufen 18. Januar, 2006.
  94. ^ "Perl Ports (Binärverteilungen)". CPAN. Archiviert Aus dem Original am 18. April 2006. Abgerufen 27. Januar, 2011.
  95. ^ "ActivePerl ist Perl für Windows, Mac, Linux, AIX, HP-UX & Solaris". Aktivitätssoftware. Archiviert von das Original am 31. März 2016. Abgerufen 9. Januar, 2011.
  96. ^ "Mit ppm" verwendet ". Aktivitätssoftware. Archiviert Aus dem Original am 27. August 2010. Abgerufen 9. Januar, 2011.
  97. ^ "Auf Wiedersehen ppm, Hallo Tool -Tool". Activestate.com. 23. Juli 2019. Archiviert Aus dem Original am 28. Juli 2020. Abgerufen 16. April, 2020.
  98. ^ Readme.txt
  99. ^ Descartes, Alligator; Bunce, Tim (2000). Programmieren des Perl DBI: [Datenbankprogrammierung mit Perl] (1 ed.). Peking [U.A.]: O'Reilly. ISBN 978-1-56592-699-8.
  100. ^ "Perl -Programmierung - Prinzipien der Programmiersprachen". Sites.google.com. Abgerufen 18. Mai, 2021.
  101. ^ Bunce, Tim; Descartes, Alligator (4. Februar 2000). Programmieren des Perl DBI: Datenbankprogrammierung mit Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  102. ^ Bekman, Sta. "Effiziente Arbeit mit Datenbanken unter mod_perl". Archiviert Aus dem Original am 22. August 2007. Abgerufen 1. September, 2007.
  103. ^ Pachev, Sasha (10. April 2007). MySQL -Interna verstehen: Entdecken und Verbesserung einer großartigen Datenbank. "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  104. ^ "Klasse :: DBI - Einfache Datenbankabstraktion - metacpan.org". metacpan.org. Archiviert vom Original am 6. August 2020. Abgerufen 8. April, 2020.
  105. ^ "Rose :: DB :: Objekt - Extensible, Hochleistungs -Objekt -Relationale Mapper (ORM). - metacpan.org". metacpan.org. Archiviert vom Original am 6. August 2020. Abgerufen 8. April, 2020.
  106. ^ "T SQL Abfrageentwicklerreferenz". pdfpremiumfree.com. Abgerufen 18. Mai, 2021.
  107. ^ "Alioth: The Computer Language Benchmarks Spiel: Projektinfo". Alioth. Archiviert von das Original am 25. März 2013. Abgerufen 13. Januar, 2011.
  108. ^ "Welche Programme sind am schnellsten?". Computersprach -Benchmarks -Spiel. Alioth. Archiviert von das Original am 17. Mai 2013. Abgerufen 13. Januar, 2011.
  109. ^ Leroy, Jean-Louis (1. Dezember 2005). "Ein rechtzeitiger Start". O'Reilly. Archiviert Aus dem Original am 13. Juni 2006. Abgerufen 22. Mai, 2006.
  110. ^ Beattie, Malcolm & Enache Adrian (2003). "B :: Bytecode Perl Compiler Bytecode Backend". CPAN. Archiviert vom Original am 30. März 2021. Abgerufen 16. September, 2013.
  111. ^ Schwartz, Randal; Foy, Brian; Phoenix, Tom (23. Juni 2011). Perl lernen. "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  112. ^ Stein, Lincoln; Maceachern, Doug (1999). Schreiben von Apache -Modulen mit Perl und C: der Apache -API und mod_perl. "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  113. ^ Bekman, Sta; Cholet, Eric (2003). Praktisch mod_perl. "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  114. ^ Ingson, Brian. "Inline - metacpan.org". CPAN. Archiviert von das Original am 13. Juni 2013. Abgerufen 26. Januar, 2011.
  115. ^ "Perl 5.12.0 Veröffentlicht - Update". Heise Media UK. 13. April 2010. archiviert von das Original am 19. April 2010. Abgerufen 8. Januar, 2011.
  116. ^ "Perl 5.16.1 veröffentlicht!". 9. August 2012. Archiviert Aus dem Original am 2. Dezember 2012. Abgerufen 26. August, 2012.
  117. ^ "Der unaufhaltsame Perl -Release -Zug?". Lwn.net. 29. Februar 2012. Archiviert vom Original am 22. August 2016. Abgerufen 28. März, 2012.
  118. ^ Tiobe Software Index (2020). "Tiobe Programming Community Index Perl". Archiviert Aus dem Original am 25. Februar 2018. Abgerufen 6. Februar, 2020.
  119. ^ "Perl 6". Das Perl 6 -Projekt. Archiviert Aus dem Original am 21. Februar 2011. Abgerufen 27. Februar, 2011.
  120. ^ Torkington, Nathan. "Transkription von Larrys Talk". nntp.perl.org. Archiviert Aus dem Original am 1. Mai 2011. Abgerufen 25. Januar, 2011.
  121. ^ "Perl6 - Die Zukunft von Perl". www.java-samples.com. Abgerufen 18. Mai, 2021.
  122. ^ "Offizielle Perl 6 -Dokumentation". Das Perl 6 -Projekt. Archiviert von das Original am 31. August 2009. Abgerufen 25. Januar, 2011.
  123. ^ Kuhn, Bradley (Januar 2001). "Überlegungen zum Portieren von Perl auf die virtuelle Java -Maschine". Universität von Cincinnati. Archiviert Aus dem Original am 21. März 2008. Abgerufen 28. Juni, 2008. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  124. ^ Chromatisch (2015). Moderne Perl. Pragmatischer Bücherregal. ISBN 978-1-68050-088-2.
  125. ^ "Feature -Vergleich von Perl 6 Compilern". Archiviert von das Original am 11. August 2017. Abgerufen 28. März, 2012.
  126. ^ Worthington, Jonathan (15. Juli 2013). "Rakudo JVM News: Weitere Tests sowie Thread- und Versprechen -Prototypen". 6guts. Archiviert Aus dem Original am 5. Oktober 2013. Abgerufen 24. Juli, 2013.
  127. ^ Worthington, Jonathan (31. Mai 2013). "Moarvm: Eine virtuelle Maschine für NQP und Rakudo". 6guts. Archiviert Aus dem Original am 9. Juli 2013. Abgerufen 24. Juli, 2013.
  128. ^ "umbenennen lwn". Archiviert von das Original am 17. Oktober 2019. Abgerufen 10. November, 2019.
  129. ^ "Rakudo/Rakudo - Github". Github.com. Archiviert Aus dem Original am 29. Juli 2017. Abgerufen 21. September, 2013.
  130. ^ Perllenkungsrat. "Was ist mit Perl 7 passiert?". blogs.perl.org. Abgerufen 7. Juli, 2022.
  131. ^ Wand, Larry (22. Mai 2014). "Perl Kultur (auch bekannt als der erste Zustand der Zwiebel)". Archiviert Aus dem Original am 22. Mai 2014. Abgerufen 22. Mai, 2014.
  132. ^ Larry Wall. "2. Zustand der Zwiebel". Archiviert Aus dem Original am 17. Juli 2012. Abgerufen 12. Oktober, 2012. (Suche nach 'Kirche')
  133. ^ Randal L. Schwartz (2. Mai 1999). "Wer ist nur ein anderer Perl -Hacker?". Newsgroup:comp.lang.perl.misc. Usenet: [email protected]. Archiviert Aus dem Original am 8. Juli 2012. Abgerufen 5. Dezember, 2014.
  134. ^ Schwartz, Randal (31. März 2005). "Kanonischer Japh". Perlmonks. Archiviert Aus dem Original am 22. Juli 2011. Abgerufen 16. Mai, 2011.
  135. ^ Greg Bacon (28. Mai 1999). "Re: Inkrementierung eines Wertes in einer Scheibe". Newsgroup:comp.lang.perl.misc. Usenet: [email protected]. Archiviert Aus dem Original am 7. Juli 2011. Abgerufen 12. Juli, 2011.
  136. ^ Zurück, Adam. "RSA in 5 Zeilen Perl". Archiviert Aus dem Original am 19. Januar 2011. Abgerufen 10. Januar, 2011.
  137. ^ "Code Golf: Was ist Codegolf?". 29 Grad. 2007. archiviert von das Original am 13. Januar 2012. Abgerufen 26. November, 2018.
  138. ^ Gallo, Felix (2003). "Der Zeroth -Perl -Wettbewerb verschleierte" (PDF). In Jon Orwant (Hrsg.). Spiele, Ablenkungen und Perl -Kultur: Best of the Perl Journal. O'Reilly Media. Archiviert von das Original (PDF) am 22. November 2009. Abgerufen 12. Januar, 2011.
  139. ^ "Perl Poesie". Perlmonks. Archiviert Aus dem Original am 27. September 2007. Abgerufen 27. Januar, 2011.
  140. ^ Conway, Damian. "Lingua :: Romana :: Perligata-Perl für das XXI-IMUM-Jahrhundert". Archiviert Aus dem Original am 30. September 2007. Abgerufen 15. Juni, 2006.
  141. ^ Brocard, Leon (22. Mai 2014). "Verwenden Sie Perl; Journal of Acme". Grnlight.net. Archiviert von das Original am 22. Mai 2014.
  142. ^ "Entwickler -Update". Das Entwickler -Update von Dr. Dobb. Miller-Freeman. 2. 1995.
  143. ^ a b Schwartz, Randal L. (1993). Perl lernen. O'Reilly & Associates. Bibcode:1993lepe.book ..... s.
  144. ^ "Perlintro". Perl 5 Version 18.0 Dokumentation. Perl 5 Porters und Perldoc.Perl.org. Archiviert von das Original am 9. Januar 2011. Abgerufen 30. Juni, 2013.
  145. ^ "Perlstyle". Perl 5 Version 18.0 Dokumentation. Perl 5 Porters und Perldoc.Perl.org. Archiviert von das Original am 26. Juni 2013. Abgerufen 30. Juni, 2013.
  146. ^ a b "Perl 6 FAQ". Perl 6 Projekt. Archiviert Aus dem Original am 1. Juli 2013. Abgerufen 30. Juni, 2013.
  147. ^ a b chromatisch (31. Dezember 2012). "Die Implementierung von Perl 5 gegen Perl 6". Archiviert Aus dem Original am 29. Juli 2013. Abgerufen 30. Juni, 2013.

Weitere Lektüre

  • Perl lernen 6. Ausgabe (2011), O'Reilly. Einführung auf Perl.
  • Perl beginnen 1st Edition (2012), Wrox. Ein Anfänger -Tutorial für diejenigen, die neu im Programmieren oder nur neu in Perl sind.
  • Moderne Perl Archiviert 22. Dezember 2011 bei der Wayback -Maschine 2. Auflage (2012), Onyx Neon. Beschreibt moderne Perl -Programmierechniken.
  • Programmierung perl 4. Ausgabe (2012), O'Reilly. Die endgültige Perlreferenz.
  • Effektive Perl -Programmierung 2. Auflage (2010), Addison-Wesley. Mittelstufe bis hin zu fortgeschrittenem Leitfaden zum Schreiben von idiomatischen Perl.
  • Perl Kochbuch, ISBN0-596-00313-7. Praktische Perl -Programmierbeispiele.
  • Dominus, Mark Jason (2005). Perl höherer Ordnung. Morgan Kaufmann. ISBN 978-1-55860-701-9. Funktionelle Programmierechniken in Perl.

Externe Links