Perl

Perl ist eine dynamische, interpretierte Mehrzweckprogrammiersprache auf höchster Ebene. Obwohl Perl nicht offiziell ein Akronym ist, gibt es verschiedenen backronyms im Gebrauch wie: Praktische Förderung und das Melden der Sprache. Perl wurde von Larry Wall 1987 als eine Mehrzwecksprache von Unix scripting ursprünglich entwickelt, um Bericht zu machen, der leichter in einer Prozession geht. Seitdem hat es viele Änderungen und Revisionen erlebt und ist weit populär unter Programmierern geworden. Larry Wall setzt fort, Entwicklung der Kernsprache und seine kommende Version, Perl 6 zu beaufsichtigen. Perl leiht Eigenschaften von anderen Programmiersprachen einschließlich C, Schale scripting (sch), AWK und sed. Die Sprache stellt starken Text zur Verfügung, der Möglichkeiten ohne die willkürlichen Datenlänge-Grenzen von vielen zeitgenössischen Werkzeugen von Unix bearbeitet, leichte Manipulation von Textdateien erleichternd. Perl hat weit verbreitete Beliebtheit gegen Ende der 1990er Jahre als ein CGI scripting Sprache teilweise wegen seiner geistigen Syntaxanalyse-Anlagen gewonnen.

Zusätzlich zu CGI wird Perl für Grafikprogrammierung, Systemverwaltung, Netzprogrammierung, Finanz, bioinformatics, und andere Anwendungen verwendet. Perl ist "die schweizerische Armeekettensäge von scripting Sprachen" wegen seiner Flexibilität und Macht mit einem Spitznamen bezeichnet. 1998 ist es auch das "Kanal-Band genannt geworden, das das Internet", in der Verweisung auf seine Allgegenwart und wahrgenommene Geschmacklosigkeit zusammenhält.

Geschichte

Frühe Versionen

Larry Wall hat Arbeit an Perl 1987 begonnen, während er als ein Programmierer an Unisys gearbeitet hat, und hat Version 1.0 zum comp.sources.misc newsgroup am 18. Dezember 1987 veröffentlicht. Die Sprache hat sich schnell im Laufe der nächsten paar Jahre ausgebreitet.

Perl 2, veröffentlicht 1988, hat einen besseren regelmäßigen Ausdruck-Motor gezeigt. Perl 3, veröffentlicht 1989, hat Unterstützung für binäre Datenströme hinzugefügt.

Ursprünglich war die einzige Dokumentation für Perl eine einzelne (immer längere) Mann-Seite. 1991 wurde die Programmierung von Perl, der vielen Programmierern von Perl als das "Kamel-Buch" wegen seines Deckels bekannt ist, veröffentlicht und ist die De-Facto-Verweisung für die Sprache geworden. Zur gleichen Zeit wurde die Versionsnummer von Perl zu 4 gestoßen, um eine Hauptänderung in der Sprache nicht zu kennzeichnen, aber die Version zu identifizieren, die durch das Buch dokumentiert wurde.

Früher Perl 5

Perl 4 ist eine Reihe von Wartungsausgaben durchgegangen, in Perl 4.036 1993 kulminierend. An diesem Punkt hat Wand Perl 4 verlassen, um Arbeit an Perl 5 zu beginnen. Das anfängliche Design von Perl 5 hat in 1994 weitergegangen. Die Perl5-Gepäckträger-Adressenliste wurde im Mai 1994 gegründet, um Arbeit am Halten nach Backbord von Perl 5 zu verschiedenen Plattformen zu koordinieren. Es bleibt das primäre Forum für die Entwicklung, die Wartung und das Halten nach Backbord von Perl 5.

Perl 5.000 wurde am 17. Oktober 1994 befreit. Es war fast abgeschlossen schreiben des Dolmetschers um, und es hat viele neue Eigenschaften zur Sprache, einschließlich Gegenstände, Verweisungen, lexikalisch (meine) Variablen und Module hinzugefügt. Wichtig haben Module einen Mechanismus zur Verfügung gestellt, für die Sprache zu erweitern, ohne den Dolmetscher zu modifizieren. Das hat dem Kerndolmetscher erlaubt sich zu stabilisieren, gerade als es gewöhnlichen Programmierern von Perl ermöglicht hat, neue Spracheigenschaften hinzuzufügen. Perl 5 ist in der aktiven Entwicklung seitdem gewesen.

Perl 5.001 wurde am 13. März 1995 befreit. Perl 5.002 wurde am 29. Februar 1996 mit der neuen Prototyp-Eigenschaft befreit. Diese erlaubten Modul-Autoren, um Unterprogramme zu machen, die sich wie Perl builtins benommen haben. Perl 5.003 wurde am 25. Juni 1996 als eine Sicherheitsausgabe befreit.

Eines der wichtigsten Ereignisse in Perl hat 5 Geschichte außerhalb der Sprache richtig stattgefunden und war eine Folge seiner Modul-Unterstützung. Am 26. Oktober 1995 wurde Comprehensive Perl Archive Network (CPAN) als ein Behältnis für Module von Perl und Perl selbst gegründet; bezüglich des Aprils 2012 trägt es 24,500 Module durch mehr als 9,500 Autoren vor.

Perl 5.004 wurde am 15. Mai 1997 befreit, und unter anderem das UNIVERSALE Paket eingeschlossen, Perl einen Grundgegenstand gebend, zu dem alle Klassen automatisch abgeleitet wurden und die Fähigkeit, Versionen von Modulen zu verlangen. Eine andere bedeutende Entwicklung war die Einschließung des CGI.pm Moduls, das zur Beliebtheit von Perl als ein CGI scripting Sprache beigetragen hat.

Perl hat auch jetzt das Laufen unter Windows von Microsoft und mehreren anderen Betriebssystemen unterstützt.

Perl 5.005 wurde am 22. Juli 1998 befreit. Diese Ausgabe hat mehrere Erhöhungen zum regex Motor, den neuen Haken in den backend durch die Module eingeschlossen, die regex zitieren Maschinenbediener, eine große Auswahl an anderen neuen Kernmodulen und hinzugefügte Unterstützung für mehrere mehr Betriebssysteme einschließlich BeOS.

2000-Gegenwart-

Perl 5.6 wurde am 22. März 2000 befreit. Hauptänderungen haben 64-Bit-Unterstützung, Schnur-Darstellung von Unicode, große Dateiunterstützung (d. h. Dateien mehr als 2 GiB) und "unser" Schlüsselwort eingeschlossen. Als man Perl 5.6 entwickelt hat, wurde die Entscheidung getroffen, um das versioning Schema zu einem mehr ähnlichem anderen offenen Quellprojekten zu schalten; danach 5.005_63 ist die folgende Version 5.5.640, mit Plänen für Entwicklungsversionen geworden, um ungerade Zahlen und stabile Versionen zu haben, um gerade Zahlen zu haben.

2000 hat Larry Wall hervor einen Aufruf nach Vorschlägen für eine neue Version von Perl von der Gemeinschaft gestellt. Der Prozess ist auf 361 RFC (Bitte um Anmerkungen) Dokumente hinausgelaufen, die in der führenden Entwicklung von Perl 6 verwendet werden sollten. 2001 hat Arbeit auf den Apokalypsen für Perl 6 begonnen, eine Reihe von Dokumenten hat bedeutet, die Änderungsanforderungen zusammenzufassen und das Design der folgenden Generation von Perl zu präsentieren. Sie wurden als eine Auswahl des RFCs, aber nicht ein formelles Dokument präsentiert. An diesem Punkt hat Perl 6 nur als eine Beschreibung einer Sprache bestanden.

Perl 5.8 wurde zuerst am 18. Juli 2002 befreit, und hatte fast jährliche Aktualisierungen seitdem. Die letzte Version von Perl 5.8 ist 5.8.9, veröffentlicht am 14. Dezember 2008. Perl 5.8 hat Unicode-Unterstützung verbessert, hat eine neue IO Durchführung hinzugefügt, hat eine neue Faden-Durchführung hinzugefügt, hat numerische Genauigkeit verbessert, und hat mehrere neue Module hinzugefügt.

2004 hat Arbeit auf den Synopsen - ursprünglich Dokumente begonnen, die die Apokalypsen zusammengefasst haben, aber die die Spezifizierung für Perl 6 Sprache geworden sind. Im Februar 2005 hat Audrey Tang Arbeit an Möpsen, Perl 6 in Haskell geschriebener Dolmetscher begonnen. Das war die erste gemeinsame Anstrengung zum Bilden von Perl 6 eine Wirklichkeit. Diese Anstrengung ist 2006 stecken geblieben.

Am 18. Dezember 2007, der 20. Jahrestag von Perl 1.0, wurde Perl 5.10.0 befreit. Perl 5.10.0 eingeschlossene bemerkenswerte neue Eigenschaften, die es näher an Perl 6 gebracht haben. Diese haben eine Schalter-Behauptung eingeschlossen (hat "gegeben" / "wenn" genannt), regelmäßige Ausdruck-Aktualisierungen und der kluge Match-Maschinenbediener, "~~".

Um diese dieselbe Zeit hat Entwicklung als Anzahlung auf einer anderen Durchführung von Perl 6 bekannte als Rakudo Perl begonnen, der im Tandem mit dem Papageien virtuelle Maschine entwickelt ist. Bezüglich des Novembers 2009 hat Rakudo Perl regelmäßige Monatsausgaben gehabt und ist jetzt die am meisten ganze Durchführung von Perl 6.

Eine Hauptänderung im Entwicklungsprozess von Perl 5 ist mit Perl 5.11 vorgekommen; die Entwicklungsgemeinschaft hat auf einen Monatsausgabe-Zyklus, mit geplanten Ausgabe-Daten drei Monate vorn umgeschaltet.

Am 12. April 2010 wurde Perl 5.12.0 befreit. Bemerkenswerte Kernerhöhungen schließen neue Syntax ein, der Maschinenbediener von Yada Yada (hat vorgehabt, Platzhalter-Code zu kennzeichnen, der noch nicht durchgeführt wird), implizite Strikturen, voller Y2038 Gehorsam, regex Umwandlungsüberbelastung, DTrace Unterstützung und Unicode 5.2. Am 21. Januar 2011 wurde Perl 5.12.3 befreit; es enthält aktualisierte Module und einige Dokumentationsänderungen. Version 5.12.4 wurde am 20. Juni 2011 veröffentlicht.

Am 14. Mai 2011 wurde Perl 5.14 befreit. Am 26. September 2011 wurde die letzte Version, 5.14.2, veröffentlicht.

Die letzte Entwicklungsausgabe von Perl 5 ist 5.15.8, veröffentlicht von Max Maischein am 20. Februar 2012.

Name

Perl wurde "Perle" ursprünglich genannt. Larry Wall hat der Sprache ein Kurzwort mit positiven Konnotationen geben wollen; er behauptet, dass er in Betracht gezogen hat (und zurückgewiesen hat) alle drei - und unanständiges Wort im Wörterbuch. Er hat auch gedacht, es nach seiner Frau Gloria zu nennen. Wall hat die vorhandene PERLE-Programmiersprache vor der offiziellen Ausgabe von Perl entdeckt und hat die Rechtschreibung des Namens geändert.

Wenn

man sich auf die Sprache bezieht, wird der Name normalerweise (Perl) als ein Eigenname kapitalisiert. Wenn man sich auf das Dolmetscher-Programm selbst bezieht, wird der Name häufig (perl) unkapitalisiert, weil die meisten Unix ähnlichen Dateisysteme mit dem Fall empfindlich sind. Vor der Ausgabe der Erstausgabe, Perl Zu programmieren, war es üblich, sich auf die Sprache als perl zu beziehen; Randal L. Schwartz hat jedoch den Namen der Sprache im Buch kapitalisiert, um es besser wenn Schriftsatz hervortreten zu lassen. Diese Fall-Unterscheidung wurde nachher als kanonisch dokumentiert.

Es gibt einen Streit über die Vollkappen, die "PERL" buchstabieren, den die Dokumentation falsch erklärt, und den einige Kerngemeinschaftsmitglieder als ein Zeichen von Außenseitern denken. Der Name ist gelegentlich backronymed als Praktische Förderungs- und Berichtssprache, die an der Oberseite von der Dokumentation und in etwas gedruckter Literatur erscheint. Mehrere backronyms sind als ebenso kanonischer, einschließlich des eigenen humorvollen Pathologisch Eklektischen Abfalls der Wand Lister angedeutet worden. Tatsächlich behauptet Wand, dass der Name beabsichtigt war, um viele verschiedene Vergrößerungen zu begeistern.

Kamel-Symbol

Die Programmierung von Perl, der von Medien von O'Reilly veröffentlicht ist, zeigt ein Bild eines Kamels auf dem Deckel und wird allgemein das "Kamel-Buch" genannt. Dieses Image eines Kamels ist ein inoffizielles Symbol von Perl sowie einem allgemeinen Hacker-Emblem geworden, auf T-Shirts und anderen Kleidungssachen erscheinend.

O'Reilly besitzt das Image als eine Handelsmarke, aber lizenziert es für den nichtkommerziellen Gebrauch, nur eine Anerkennung und eine Verbindung zu www.perl.com verlangend. Für das Genehmigen für den kommerziellen Gebrauch wird für einen Fall durch die Fall-Basis entschieden. O'Reilly stellt auch "" Programmierfirmenzeichen der Republik Perl für nichtkommerzielle Seiten und Tasten "Powered by Perl" für jede Seite zur Verfügung, die Perl verwendet.

Zwiebelnsymbol

Das Perl Fundament besitzt ein alternatives Symbol, eine Zwiebel, die es seinen Tochtergesellschaften, Perl Händlern, PerlMonks, Perl.org, und anderen lizenziert. Das Symbol ist ein Sehwortspiel über die Perlzwiebel.

Übersicht

Perl ist eine Mehrzweckprogrammiersprache, die ursprünglich für die Textmanipulation entwickelt ist, aber wird für eine breite Reihe von Aufgaben einschließlich Systemverwaltung, Webentwicklung, Netzprogrammierung, Spiele, bioinformatics, und GUI Entwicklung verwendet.

Die Sprache ist beabsichtigt um (leicht praktisch zu sein, effizient, abgeschlossen zu verwenden), aber nicht schön (winzig, elegant, minimal). Seine Haupteigenschaften schließen Unterstützung für vielfache Programmierparadigmen (verfahrensrechtliche, objektorientierte und funktionelle Stile), Verweisung ein, Speichermanagement (ohne einen Zyklus entdeckenden Müllmann), eingebaute Unterstützung für die Textverarbeitung und eine große Sammlung von Drittmodulen aufzählend.

Gemäß Larry Wall hat Perl zwei Slogans. Das erste ist "Es gibt mehr als eine Weise, es", allgemein bekannt als TMTOWTDI zu tun. Der zweite Slogan ist "Leichte Dinge sollte leicht sein, und harte Dinge sollten möglich sein".

Eigenschaften

Die gesamte Struktur von Perl stammt weit gehend von C. Perl ab ist in der Natur, mit Variablen, Ausdrücken, Zuweisungsbefehlen, mit der geschweifter Klammer abgegrenzten Blöcken, Kontrollstrukturen und Unterprogrammen verfahrensrechtlich.

Perl nimmt auch Eigenschaften von der Schale-Programmierung. Alle Variablen werden mit der Führung sigils gekennzeichnet, die eindeutig den Datentyp (zum Beispiel, Skalar, Reihe, Kuddelmuddel) der Variable im Zusammenhang identifizieren. Wichtig erlauben sigils Variablen, direkt in Schnuren interpoliert zu werden. Perl hat viele eingebaute Funktionen, die Werkzeuge zur Verfügung stellen, die häufig in der Schale-Programmierung verwendet sind (obwohl viele dieser Werkzeuge durch Programme durchgeführt werden, die zur Schale äußerlich sind), wie das Sortieren und Auffordern von Systemmöglichkeiten.

Perl nimmt Listen vom Lispeln, Kuddelmuddel ("assoziative Reihe") von AWK und regelmäßigen Ausdrücken von sed. Diese vereinfachen und erleichtern viele Syntaxanalyse, Textberühren und Datenverwaltungsaufgaben.

Perl 5 Komfortmerkmale, die komplizierte Datenstrukturen, erstklassige Funktionen (d. h. Verschlüsse als Werte), und ein objektorientiertes Programmiermodell unterstützen. Diese schließen Verweisungen, Pakete, klassenbasierte Methode-Absendung, und lexikalisch scoped Variablen, zusammen mit Bearbeiter-Direktiven (zum Beispiel, der pragma) ein. Eine zusätzliche Haupteigenschaft, die mit Perl 5 eingeführt ist, war die Fähigkeit, Code als Mehrwegmodule zu paketieren. Larry Wall hat später festgestellt, dass "Die ganze Absicht von Perl 5's Modul-System das Wachstum der Kultur von Perl aber nicht des Kerns von Perl fördern sollte."

Alle Versionen von Perl tun automatisches datentippendes und automatisches Speichermanagement. Der Dolmetscher weiß den Typ und die Lagerungsvoraussetzungen jedes Datengegenstands im Programm; es teilt zu und befreit Lagerung für sie als das notwendige Verwenden-Bezugszählen (so kann es nicht deallocate kreisförmige Datenstrukturen ohne manuelles Eingreifen). Gesetzliche Typ-Konvertierungen — zum Beispiel, Konvertierungen von der Zahl, um zu spannen — werden automatisch in der Durchlaufzeit getan; ungesetzliche Typ-Konvertierungen sind tödliche Fehler.

Design

Das Design von Perl kann als eine Antwort auf drei breite Tendenzen in der Computerindustrie verstanden werden: fallende Hardware-Kosten, steigende Arbeitskosten und Verbesserungen in der Bearbeiter-Technologie. Viele frühere Computersprachen, wie Fortran und C, haben zum Ziel gehabt, effizienten Gebrauch der teuren Computerhardware zu machen. Im Gegensatz wird Perl entworfen, um effizienten Gebrauch von teuren Computerprogrammierern zu machen.

Perl hat viele Eigenschaften, die die Aufgabe des Programmierers auf Kosten der größeren Zentraleinheit und Speichervoraussetzungen erleichtern. Diese schließen automatisches Speichermanagement ein; das dynamische Schreiben; Schnuren, Listen und Kuddelmuddel; regelmäßige Ausdrücke; Selbstbeobachtung; und eine Funktion. Perl folgt der Theorie "keiner eingebauten Grenzen", eine Idee, die der Null Eine Unendlichkeitsregel ähnlich ist.

Wand wurde als ein Linguist erzogen, und das Design von Perl wird sehr durch Sprachgrundsätze informiert. Beispiele schließen Huffman ein, der codiert (allgemeine Aufbauten sollten kurz sein), gute Endgewichtung (sollte die wichtige Information zuerst kommen), und eine große Sammlung von Sprachprimitiven. Perl bevorzugt Sprachkonstruktionen, die kurz und für Menschen natürlich sind, um zu schreiben, sogar dort, wo sie den Dolmetscher von Perl komplizieren.

Syntax von Perl widerspiegelt die Idee, dass "Dinge, die verschieden sind, verschieden aussehen sollten." Zum Beispiel haben Skalare, Reihe und Kuddelmuddel verschiedene Führung sigils. Reihe-Indizes und Kuddelmuddel-Schlüssel verwenden verschiedene Arten von geschweiften Klammern. Schnuren und regelmäßige Ausdrücke haben verschiedene Standardbegrenzungszeichen. Dieser Annäherung kann mit Sprachen wie Lispeln gegenübergestellt werden, wo dieselbe S-Ausdruck-Konstruktion und grundlegende Syntax zu vielen verschiedenen Zwecken verwendet werden.

Perl macht kein besonderes Programmierparadigma (verfahrensrechtlich, objektorientiert, funktionell, oder andere) geltend oder verlangt sogar, dass der Programmierer unter ihnen wählt.

Es gibt eine breite praktische Begabung sowohl in die Sprache von Perl als auch in die Gemeinschaft und Kultur, die es umgeben. Die Einleitung zur Programmierung von Perl beginnt: "Perl ist eine Sprache, um Ihren getanen Job zu bekommen." Eine Folge davon ist, dass Perl nicht eine saubere Sprache ist. Es schließt viele Eigenschaften ein, duldet Ausnahmen zu seinen Regeln, und verwendet Heuristik, um syntaktische Zweideutigkeiten aufzulösen. Wegen der Verzeihennatur des Bearbeiters können Programmfehler manchmal hart sein zu finden. Die Funktionsdokumentation von Perl bemerkt auf dem verschiedenen Verhalten von eingebauten Funktionen in der Liste und den Skalarzusammenhängen, dass "Im Allgemeinen sie tun, was Sie wollen, wenn Sie Konsistenz nicht wollen."

Keine schriftliche Spezifizierung oder Standard für die Sprache von Perl bestehen für Versionen von Perl durch Perl 5, und es gibt keine Pläne, ein für die jetzige Version von Perl zu schaffen. Es hat nur eine Durchführung des Dolmetschers gegeben, und die Sprache hat sich zusammen damit entwickelt. Dieser Dolmetscher, zusammen mit seinen Funktionsprüfungen, steht als eine De-Facto-Spezifizierung der Sprache. Perl 6 hat jedoch mit einer Spezifizierung angefangen, und mehrere Projekte haben zum Ziel, einige oder die ganze Spezifizierung durchzuführen.

Anwendungen

Perl hat viele und geänderte Anwendungen, die durch die Verfügbarkeit von vielen Standard- und Drittmodulen zusammengesetzt sind.

Seit den frühen Tagen des Webs haben Programmierer Perl verwendet, um CGI Schriften zu schreiben. Perl ist als einer "der drei Ps" (zusammen mit der Pythonschlange und PHP), die populärsten dynamischen Sprachen bekannt, um Webanwendungen zu schreiben. Es ist auch ein integrierter Bestandteil des populären LAMPE-Lösungsstapels für die Webentwicklung. Große in Perl geschriebene Projekte schließen cPanel, Hieb, Bugzilla, RT, TWiki und Beweglichen Typ ein. Viele Websites des hohen Verkehrs verwenden Perl umfassend. Beispiele schließen Amazon.com, bbc.co.uk, Priceline.com, Craigslist, IMDb, LiveJournal, Slashdot und Ticketmaster ein.

Perl wird häufig als eine Leim-Sprache verwendet, zusammen Systeme und Schnittstellen bindend, die nicht spezifisch entworfen wurden, um, und für "Daten munging" zu zwischenfunktionieren, d. h. sich umwandelnd oder große Datenmengen für Aufgaben wie das Schaffen von Berichten bearbeitend. Tatsächlich werden diese Kräfte vertraut verbunden. Die Kombination macht Perl eine populäre Allzwecksprache für Systemverwalter besonders, weil in kurze Programme eingegangen und auf einer einzelnen Befehl-Linie geführt werden kann.

Mit einem Grad der Sorge kann Code von Perl tragbar über Windows und Unix gemacht werden. Tragbarer Perl-Code wird häufig von Lieferanten der Software (beide KINDERBETTCHEN und bestellt) verwendet, um das Verpacken zu vereinfachen, und Wartung der Software bauen - und Aufstellungsschriften.

Grafische Benutzerschnittstellen (GUIs) können mit Perl entwickelt werden. Zum Beispiel wird Perl/Tk allgemein verwendet, um Benutzerwechselwirkung mit Schriften von Perl zu ermöglichen. Solche Wechselwirkung kann gleichzeitig oder mit Rückrufaktionen asynchron sein, um den GUI zu aktualisieren. Für mehr Information über die beteiligten Technologien, sieh Tk, Tcl und WxPerl.

Perl wird auch in der Finanz und in bioinformatics weit verwendet, wo es wegen der schnellen Anwendungsentwicklung und Aufstellung und wegen seiner Fähigkeit geschätzt wird, große Dateien zu behandeln.

Durchführung

Perl wird als ein Kerndolmetscher durchgeführt, der in C zusammen mit einer großen Sammlung von Modulen geschrieben ist, die in Perl und C. geschrieben sind, die stabile Version (5.12.3) ist 14.2 Mb, wenn paketiert, in einer Teer-Datei und zusammengepresstem gzip. Der Dolmetscher ist 150,000 Linien des C-Codes und kompiliert zu einem auf typischen Maschinenarchitekturen rechtskräftigen 1 Mb. Wechselweise kann der Dolmetscher zu einer Verbindungsbibliothek kompiliert und in anderen Programmen eingebettet werden. Es gibt fast 500 Module im Vertrieb, 200,000 Linien von Perl und zusätzliche 350,000 Linien des C-Codes umfassend. (Viel vom C-Code in den Modulen besteht aus Charakter verschlüsselnden Tischen.)

Der Dolmetscher hat eine objektorientierte Architektur. Alle Elemente der Sprache von Perl — Skalare, Reihe, Kuddelmuddel, coderefs, filehandles — werden im Dolmetscher durch C structs vertreten. Operationen auf diesen structs werden durch eine große Sammlung von Makros, typedefs, und Funktionen definiert; diese setzen den Perl C API ein. Die Perl API kann zum uneingeweihten verwirrend sein, aber seine Zugang-Punkte folgen einem konsequenten Namengeben-Schema, das Leitung denjenigen zur Verfügung stellt, die es verwenden.

Das Leben eines Dolmetschers von Perl teilt sich weit gehend in eine kompilieren Phase und eine Lauf-Phase. In Perl sind die Phasen die Hauptstufen im Lebenszyklus des Dolmetschers. Jeder Dolmetscher geht jede Phase nur einmal durch, und die Phasen folgen in einer festen Folge.

Die meisten davon, wem in Perl geschehen, kompilieren Phase ist Kompilation und der grösste Teil davon, wem in der Lauf-Phase von Perl geschieht, ist Ausführung, aber es gibt bedeutende Ausnahmen. Perl macht wichtigen Gebrauch seiner Fähigkeit, Code von Perl während der kompilieren Phase durchzuführen. Perl wird auch Kompilation in die Lauf-Phase verzögern. Die Begriffe, die die Art der Verarbeitung anzeigen, die wirklich jederzeit vorkommt, sind Übersetzungszeit und Durchlaufzeit. Perl ist in der Übersetzungszeit an den meisten Punkten während der kompilieren Phase, aber in Übersetzungszeit kann auch während der Lauf-Phase eingegangen werden. Die Übersetzungszeit für den Code in einem zum eingebauten passierten Schnur-Argument kommt während der Lauf-Phase vor. Perl ist häufig in der Durchlaufzeit während der kompilieren Phase und gibt den grössten Teil des Laufs aus führen Durchlaufzeit stufenweise ein. Der Code in Blöcken führt in der Durchlaufzeit, aber in der kompilieren Phase durch.

Während der Übersetzung analysiert der Dolmetscher Code von Perl in einen Syntax-Baum grammatisch. In der Durchlaufzeit führt es das Programm durch das Wandern des Baums durch. Text wird nur einmal grammatisch analysiert, und der Syntax-Baum ist der Optimierung unterworfen, bevor es durchgeführt wird, so dass Ausführung relativ effizient ist. Übersetzungszeit-Optimierungen auf dem Syntax-Baum schließen unveränderliche Falte und Zusammenhang-Fortpflanzung ein, aber Guckloch-Optimierung wird auch durchgeführt.

Perl hat eine Turing-ganze Grammatik, weil Syntaxanalyse durch den während der kompilieren Phase durchgeführten Laufzeitcode betroffen werden kann. Deshalb kann Perl nicht durch eine gerade Kombination von Lex/Yacc lexer/parser grammatisch analysiert werden. Statt dessen führt der Dolmetscher seinen eigenen lexer durch, der mit einem modifizierten GNU-Bison parser koordiniert, um Zweideutigkeiten auf der Sprache aufzulösen.

Es wird häufig gesagt, dass "Nur perl Perl grammatisch analysieren kann", bedeutend, dass nur der Dolmetscher von Perl die Sprache von Perl (Perl) grammatisch analysieren kann, aber sogar das ist im Allgemeinen nicht, wahr. Weil der Dolmetscher von Perl eine Maschine von Turing während seines vortäuschen kann, kompilieren Phase, würde es das Stockende Problem entscheiden müssen, um Syntaxanalyse in jedem Fall zu vollenden. Es ist ein langjähriges Ergebnis, dass das Stockende Problem unentscheidbar ist, und deshalb nicht sogar perl immer Perl grammatisch analysieren kann. Perl macht die ungewöhnliche Wahl, den Benutzerzugang zu seiner vollen Programmiermacht in seinem eigenen zu geben, kompilieren Phase. Die Kosten in Bezug auf die theoretische Reinheit sind hoch, aber praktische Unannehmlichkeit scheint, selten zu sein.

Andere Programme, die sich erbieten, Perl, wie Quellcode Analysatoren und auto-indenters grammatisch zu analysieren, müssen nicht nur mit zweideutigen syntaktischen Konstruktionen sondern auch mit der Unentscheidbarkeit von Perl kämpfen, der im allgemeinen Fall grammatisch analysiert. Das PPI-Projekt von Adam Kennedy hat sich darauf konzentriert, Code von Perl als ein Dokument grammatisch zu analysieren (seine Integrität als ein Dokument behaltend), anstatt Perl als rechtskräftiger Code grammatisch zu analysieren (den nicht sogar Perl selbst immer tun kann). Es war Kennedy, der zuerst vermutet hat, dass "grammatisch analysierender Perl unter dem 'Stockenden Problem'" leidet, der später bewiesen wurde.

Perl wird mit ungefähr 120,000 Funktionsprüfungen verteilt. Diese laufen, weil ein Teil des normalen Prozess baut und umfassend den Dolmetscher und seine Kernmodule ausübt. Entwickler von Perl verlassen sich auf die Funktionsprüfungen, um sicherzustellen, dass Änderungen dem Dolmetscher Programmfehler nicht vorstellen; zusätzlich können Benutzer von Perl, die sehen, dass der Dolmetscher seine Funktionsprüfungen auf ihrem System passiert, einen hohen Grad des Vertrauens haben, dass es richtig arbeitet.

Die Wartung des Dolmetschers von Perl ist immer schwieriger im Laufe der Jahre geworden. Die Codebasis hat dauernde Entwicklung seit 1994 erlebt. Der Code ist für die Leistung auf Kosten der Einfachheit, Klarheit und starken inneren Schnittstellen optimiert worden. Neue Eigenschaften sind hinzugefügt worden, vollenden Sie noch eigentlich rückwärts gerichtete Vereinbarkeit mit früheren Versionen wird aufrechterhalten. Hauptausgaben von Perl wurden durch Perl pumpkings koordiniert, der Integrierungsfleck-Vorlagen und üble Programmfehler-Lagen behandelt hat, aber die Sprache hat sich zu einem Drehen seitdem geändert, veröffentlichen Sie monatlich Zyklus. Entwicklungsdiskussion findet über die perl5_porters Adressenliste statt. Bezüglich Perl 5.11 hat Entwicklungsaufwand Wiederfactoring bestimmte Kernmodule eingeschlossen, die als 'Doppellifed' Module aus dem Kern von Perl bekannt sind, um zu helfen, einige dieser Probleme zu erleichtern.

Verfügbarkeit

Perl ist lizenziert sowohl laut der Künstlerischen Lizenz als auch laut der GNU-Lizenz der Breiten Öffentlichkeit Doppel-. Vertrieb ist für am meisten Betriebssysteme verfügbar. Es ist auf Systemen von Unix und Unix-like besonders überwiegend, aber es ist zum modernsten (und viele veraltet) Plattformen getragen worden. Mit nur sechs berichteten Ausnahmen kann Perl aus dem Quellcode auf allen POSIX-entgegenkommende oder otherwise-Unix-compatible Plattformen kompiliert werden.

Wegen ungewöhnlicher für die Umgebung des Klassikers von Mac OS erforderlicher Änderungen wurde ein spezieller Hafen genannt MacPerl unabhängig verladen.

Das Umfassende Perl-Archiv-Netz trägt eine ganze Liste von unterstützten Plattformen mit Verbindungen zum auf jedem verfügbaren Vertrieb. CPAN ist auch die Quelle für öffentlich verfügbare Module von Perl, die nicht ein Teil des Kernvertriebs von Perl sind.

Windows

Benutzer von Windows von Microsoft installieren normalerweise einen des heimischen binären Vertriebs von Perl für Win32, meistens Erdbeereperl oder ActivePerl. Das Kompilieren von Perl aus dem Quellcode unter Windows ist möglich, aber die meisten Installationen haben am Erfordernis C Bearbeiter Mangel und bauen Werkzeuge. Das macht es auch schwierig, Module vom CPAN, besonders diejenigen zu installieren, die in C teilweise geschrieben werden.

ActivePerl ist ein geschlossener Quellvertrieb von ActiveState, der regelmäßige Ausgaben hat, die die Kernausgaben von Perl verfolgen. Der Vertrieb schließt auch den Paket-Betriebsleiter von Perl (PPM), ein populäres Werkzeug für Installation, das Entfernen, die Aufrüstung und das Handhaben des Gebrauches von allgemeinen Modulen von Perl ein.

Erdbeere Perl ist ein offener Quellvertrieb für Windows. Es hat regelmäßige, vierteljährliche Ausgaben seit dem Januar 2008 einschließlich neuer Module als Feed-Back gehabt und bittet geht ein. Erdbeere Perl hat zum Ziel im Stande zu sein, Module wie Standard Vertrieb von Perl auf anderen Plattformen, einschließlich des Kompilierens von XS Modulen zu installieren.

Die Cygwin Wetteifer-Schicht ist eine andere Weise, Perl unter Windows zu führen. Cygwin stellt eine Unix ähnliche Umgebung auf Windows zur Verfügung, und sowohl Perl als auch CPAN sind verfügbar, weil Standard Pakete im Einstellungsprogramm von Cygwin vorkompiliert hat. Weil Cygwin auch den gcc einschließt, ist das Kompilieren von Perl von der Quelle auch möglich.

Datenbankschnittstellen

Perl wird für Datenbankanwendungen weit bevorzugt. Seine textbehandelnden Möglichkeiten sind nützlich, um SQL-Abfragen zu erzeugen; Reihe, Kuddelmuddel und automatisches Speichermanagement machen es leicht, die zurückgegebenen Daten zu sammeln und zu bearbeiten.

In frühen Versionen von Perl wurden Datenbankschnittstellen durch die Wiederverbindung des Dolmetschers mit einer Kundenseite-Datenbankbibliothek geschaffen. Das war genug schwierig, dass es für nur einige von die meisten - wichtige und am weitesten verwendete Datenbanken getan wurde, und es das resultierende rechtskräftige auf das Verwenden gerade einer Datenbankschnittstelle auf einmal eingeschränkt hat.

In Perl 5 werden Datenbankschnittstellen durch Perl DBI Module durchgeführt. Der DBI (Datenbankschnittstelle) Modul präsentiert eine einzelne, datenbankunabhängige Schnittstelle Anwendungen von Perl, während die DBD (Datenbankfahrer) Module die Details behandeln, auf ungefähr 50 verschiedene Datenbanken zuzugreifen; es gibt DBD Fahrer für den grössten Teil von ANSI SQL Datenbanken.

DBI stellt das Verstecken für Datenbankgriffe und Abfragen zur Verfügung, die Leistung in langlebigen Ausführungsumgebungen wie mod_perl außerordentlich verbessern können, wenden helfende Großseriensysteme Lastspitzen als in der Wirkung von Slashdot ab.

In modernen Anwendungen von Perl, besonders jenes schriftliche Verwenden-Webanwendungsfachwerk wie Katalysator, wird das DBI Modul häufig indirekt über mit dem Gegenstandverwandtschaftsmappers solcher als verwendet, oder die SQL-Abfragen und Griff-Daten durchsichtig dem Anwendungsautor erzeugen.

Vergleichende Leistung

Das Computersprachabrisspunkt-Spiel, ein von Alioth veranstaltetes Projekt, vergleicht die Leistung von Durchführungen von typischen Programmierproblemen auf mehreren Programmiersprachen. Die vorgelegten Durchführungen von Perl leisten normalerweise zum hohen Ende des Speichergebrauch-Spektrums und geben geänderte Geschwindigkeitsergebnisse. Die Leistung von Perl im Abrisspunkt-Spiel ist für interpretierte Sprachen typisch.

Große Perl Programme fangen langsamer an als ähnliche Programme auf kompilierten Sprachen, weil perl die Quelle jedes Mal kompilieren muss, wenn es läuft. In einem Gespräch am YAPC:: Europäische 2005-Konferenz und nachfolgender Artikel "A Timely Start", Jean-Louis Leroy hat gefunden, dass seine Programme von Perl viel länger genommen haben, um zu laufen, als er erwartet hat, weil perl Dolmetscher ausgegebene viele der Zeitentdeckungsmodule wegen seines übergroßen Pfad einschließen. Verschieden von Java, Pythonschlange und Rubin, hat Perl nur experimentelle Unterstützung für das Vorkompilieren. Deshalb bezahlen Perl Programme diese Oberstrafe auf jeder Ausführung. Die Lauf-Phase von typischen Programmen ist lang genug, dass amortisierte Anlauf-Zeit nicht wesentlich ist, aber Abrisspunkte, die sehr kurze Ausführungszeiten messen, wahrscheinlich wegen dessen oben verdreht werden.

Mehrere Werkzeuge sind eingeführt worden, um diese Situation zu verbessern. Das erste derartige Werkzeug war der mod_perl des Apachen, der sich bemüht hat, einen von die meisten - allgemeine Gründe zu richten, dass kleine Programme von Perl schnell angerufen wurden: CGI Webentwicklung. ActivePerl, über Microsoft ISAPI, stellt ähnliche Leistungsverbesserungen zur Verfügung.

Sobald Perl Code kompiliert wird, dort ist oben während der Ausführungsphase zusätzlich, die normalerweise für Programme nicht da ist, die auf kompilierten Sprachen wie C oder C ++ geschrieben sind. Beispiele von solchem oben schließen bytecode Interpretation, bezugsaufzählendes Speichermanagement und dynamische Datentypprüfung ein.

Optimierung

Wie jeder Code können Programme von Perl für die Leistung mit Abrisspunkten und Profilen abgestimmt werden, nachdem eine lesbare und richtige Durchführung beendet wird. Teilweise wegen der interpretierten Natur von Perl, mehr schreibend - wird effizienter Perl nicht immer genug sein, um jemandes Leistungsabsichten für ein Programm zu entsprechen.

In solchen Situationen, die meisten - können kritische Routinen eines Programms von Perl auf anderen Sprachen wie C oder Monteur geschrieben werden, der mit Perl über einfache Reihenmodule oder den komplizierteren, aber flexiblen XS Mechanismus verbunden werden kann. Nicholas Clark, ein Kernentwickler von Perl, bespricht einige Designumtausche von Perl und Lösungen in einem genannten 2002-Dokument, "Wenn perl nicht ziemlich schnell genug ist".

Perl 6

Auf der Perl 2000-Konferenz hat Jon Orwant Argumente für eine neue Hauptsprachinitiative vorgebracht. Das hat zu einer Entscheidung geführt, Arbeit an einer Umgestaltung der Sprache zu beginnen, Perl 6 genannt zu werden. Vorschläge für neue Spracheigenschaften wurden von der Gemeinschaft von Perl auf freiem Fuß gebeten, und mehr als 300 RFCs wurden vorgelegt.

Larry Wall hat die nächsten paar Jahre ausgegeben, den RFCs verdauend und sie in ein zusammenhängendes Fachwerk für Perl 6 synthetisierend. Er hat sein Design für Perl 6 in einer Reihe von Dokumenten genannt "Apokalypsen" präsentiert, die numeriert werden, um Kapiteln in der Programmierung von Perl zu entsprechen., die sich entwickelnde Spezifizierung von Perl 6 wird in Designdokumenten genannt Synopsen kurz zusammengefasst, die numeriert werden, um Apokalypsen zu entsprechen.

Perl 6 ist nicht beabsichtigt, um rückwärts kompatibel zu sein, obwohl es eine Vereinbarkeitsweise geben wird. Perl 6 und Perl 5 sind verschiedene Sprachen mit einer allgemeinen Herkunft.

Die Thesenarbeit von Bradley M. Kuhn, der von Larry Wall beaufsichtigt ist, hat den möglichen Gebrauch Javas als virtuelle Maschine als eine Durchlaufzeit für Perl betrachtet. Die These von Kuhn hat diese Annäherung gezeigt, um problematisch zu sein. 2001 wurde es entschieden, dass Perl 6 auf einer Quer-Sprache virtuelle Maschine genannt der Papagei führen würde. Das wird bedeuten, dass andere Sprachen, die den Papageien ins Visier nehmen, heimischen Zugang zu CPAN gewinnen werden, ein Niveau der Quer-Sprachentwicklung erlaubend.

2005 hat Audrey Tang das Mops-Projekt, eine Durchführung von Perl 6 in Haskell geschaffen. Das war und setzt fort, als, eine Testplattform für Perl 6 Sprache (getrennt von der Entwicklung der wirklichen Durchführung) das Erlauben die Sprachentwerfer zu handeln, zu erforschen. Das Mops-Projekt hat eine energische Perl/Haskell Quer-Sprachgemeinschaft erzeugt, die um den freenode #perl6 IRC Kanal in den Mittelpunkt gestellt ist.

Mehrere Eigenschaften in Perl 6 Sprache zeigen jetzt Ähnlichkeiten Haskell.

Bezüglich 2012 Perl wird 6 Entwicklung in erster Linie ungefähr zwei Bearbeiter, Rakudo Perl 6, eine Durchführung in den Mittelpunkt gestellt, die oben auf dem Papageien virtuelle Maschine und Niecza läuft, der die Durchlaufzeit der Gemeinsamen Sprache ins Visier nimmt.

Zukunft von Perl 5

Die Entwicklung von Perl 5 geht auch weiter. Perl 5.12.0 wurde im April 2010 mit einigen neuen Eigenschaften unter Einfluss des Designs von Perl 6 befreit. Perl 5.14.1 wurde am 17. Juni 2011 befreit. Perl 5 Entwicklungsversionen werden auf einer Monatsbasis mit Hauptausgaben befreit, die einmal pro Jahr herauskommen.

Zukünftige Pläne für Perl 5 schließen das Bilden der Kernsprache ein, die leichter ist, sich von Modulen und Versorgung eines kleinen, ausziehbaren Meta-Gegenstand-Protokolls im Kern auszustrecken.

Das Verhältnisverhältnis von Suchen 'nach Programmierung von Perl', im Vergleich zu ähnlichen Suchen nach anderen Programmiersprachen, hat sich von 2005 bis zum Anfang 2011 (mit einer nachfolgenden Zunahme seitdem) geneigt.

Jedoch, gemäß dieser derselben Quelle, ist Perl eine der zehn ersten populärsten Programmiersprachen gewesen, seitdem Aufzeichnungen 2001 begonnen haben.

Gemeinschaft von Perl

Die Kultur und Gemeinschaft von Perl haben sich neben der Sprache selbst entwickelt. Usenet war der erste öffentliche Treffpunkt, in dem Perl eingeführt wurde, aber über den Kurs seiner Evolution wurde die Gemeinschaft von Perl durch das Wachstum gestaltet, internetbasierte Dienstleistungen einschließlich der Einführung des World Wide Web zu verbreitern. Die Gemeinschaft, die Perl umgibt, war tatsächlich, das Thema des ersten "Staates von Larry Wall des" Zwiebelngespräches.

Staat der Zwiebel

Der Staat der Zwiebel ist der Name für die jährlichen mit dem Grundgedanken artigen Zusammenfassungen von Larry Wall auf dem Fortschritt von Perl und seiner Gemeinschaft. Sie werden durch seinen Gütestempel-Humor charakterisiert, Verweisungen auf die Kultur von Perl, die breitere Hacker-Kultur, den Sprachhintergrund von Wall, manchmal seine Häuslichkeit und gelegentlich sogar sein christlicher Hintergrund verwendend.

Jedes Gespräch wird zuerst auf verschiedenen Konferenzen von Perl gegeben und wird schließlich auch online veröffentlicht.

Zeitvertreib von Perl

JAPHs

: In der E-Mail, Usenet und den Anschlagbrett-Versetzungen, "Gerade ein anderer Hacker von Perl" (JAPH) sind Programme eine allgemeine Tendenz, die von Randal L. Schwartz, einem der frühsten Berufstrainer von Perl hervorgebracht ist. Im Sprachgebrauch der Kultur von Perl sind Programmierer von Perl als Hacker von Perl bekannt, und davon leitet die Praxis ab, kurze Programme zu schreiben, um den Ausdruck "Gerade ein anderer Hacker von Perl," auszudrucken. Im Geist des ursprünglichen Konzepts werden diese Programme gemäßigt verfinstert und kurz genug, um die Unterschrift einer E-Mail oder Usenet-Nachricht einzubauen. Der "kanonische" JAPH, wie entwickelt, durch Schwartz schließt das Komma am Ende ein, obwohl das häufig weggelassen wird.

Golf von Perl

: Perl "Golf" ist der Zeitvertreib, die Anzahl von Charakteren (Schlüssel "Schläge") verwendet in einem Programm von Perl an das bloße Minimum, viel als zu vermindern, wie sich Golf-Spieler bemühen, so wenige Schüsse wie möglich in einer Runde zu nehmen. Der erste Gebrauch des Ausdrucks hat betont, dass der Unterschied zwischen dem Fußgängercode bedeutet hat, einen Neuling und knappe Kerben zu unterrichten, um wahrscheinlich erfahrene Programmierer von Perl, ein Beispiel des letzten Wesens JAPHs zu amüsieren, die bereits in Unterschriften in Usenet-Versetzungen und anderswohin verwendet wurden. Ähnliche Glanzstücke waren ein namenloser Zeitvertreib auf der Sprache APL in vorherigen Jahrzehnten gewesen. Der Gebrauch von Perl, um ein Programm zu schreiben, das RSA Verschlüsselung durchgeführt hat, hat ein weit verbreitetes und praktisches Interesse an diesem Zeitvertreib veranlasst. In nachfolgenden Jahren ist der Begriff "Code-Golf" auf den Zeitvertreib auf anderen Sprachen angewandt worden. Eine Perl Golf-Apokalypse wurde auf der Perl Konferenz 4.0 in Monterey, Kalifornien im Juli 2000 gehalten.

Verfinsterung

: Als mit C waren verfinsterte Codekonkurrenzen ein weithin bekannter Zeitvertreib gegen Ende der 1990er Jahre. Der Verfinsterte Perl-Streit war eine Konkurrenz, die durch Die Perl Zeitschrift von 1996 bis 2000 gehalten ist, die einen Bogen-Vorteil der syntaktischen Flexibilität von Perl gemacht hat. Preise wurden für Kategorien solcher als "am stärksten" — Programme gegeben, die effizienten Gebrauch des Raums — und "am besten Vier-Linien-Unterschrift" für Programme gemacht haben, die vier Linien von 76 Charakteren im Stil eines Usenet-Unterschrift-Blocks einbauen.

Dichtung

: Dichtung von Perl ist die Praxis, Gedichte zu schreiben, die kompiliert werden können, weil gesetzliche Perl, zum Beispiel das als Schwarzer Perl bekannte Stück codieren. Dieses Hobby wird möglich durch die Vielzahl von englischen Wörtern gemacht, die in Perl verwendet werden. Neue Gedichte werden regelmäßig zur Gemeinschaft an PerlMonks vorgelegt.

Perl auf IRC

Es gibt mehrere IRC Kanäle, die Unterstützung für die Sprache und einige Module anbieten.

CPAN Gipfel

Es gibt auch viele Beispiele des Codes geschrieben rein für die Unterhaltung auf dem CPAN., zum Beispiel, erlaubt, Programme in Latein zu schreiben. Nach der Ausführung solch eines Programms übersetzt das Modul seinen Quellcode in regelmäßigen Perl und führt es.

Die Perl Gemeinschaft hat den "Gipfel" namespace für Module beiseite gelegt, die in der Natur Spaß machen (aber sein Spielraum hat sich erweitert, um experimentellen oder Forschungscode oder jedes andere Modul einzuschließen, das nicht gemeint wird, um jemals in der Produktion verwendet zu werden). Einige der Gipfel-Module werden auf amüsante Weisen absichtlich durchgeführt. Das, schließt eines der ersten Module im namespace ein, der dem Quellcode des Programms erlaubt (d. h., alle Charaktere "weiß gemacht" zu werden, die durch whitespace ersetzt sind) und doch arbeiten.

Siehe auch

  • Umriss von Perl
  • Sprachstruktur von Perl
  • Perl Datensprache
  • Perl Gegenstand-Umgebung
  • Einfache alte Dokumentation

Weiterführende Literatur

  • Funktionelle Programmiertechniken in Perl.

Links


Papst Martin V / Proto-menschliche Sprache
Impressum & Datenschutz