www.wikidata.de-de.nina.az
PERL ist eine Weiterleitung auf diesen Artikel Zu weiteren Bedeutungen siehe Perl Perl pɝːl ist eine freie plattformunabhangige und interpretierte Programmiersprache die mehrere Paradigmen unterstutzt PerlParadigmen prozedural modular objektorientiert seit Perl 5 Erscheinungsjahr 1987Designer Larry WallEntwickler Larry Wall Perl PorterAktuelle Version 5 38 0 1 2 Juli 2023 Typisierung schwach dynamisch implizitBeeinflusst von awk BASIC PLUS 2 C C Lisp Pascal Python 3 Raku 4 sed Smalltalk Unix ShellBeeinflusste PHP Ruby Python JavaScript Windows PowerShellBetriebssystem plattformunabhangigLizenz GPL und Artistic Licensewww perl orgDer Linguist Larry Wall entwarf sie 1987 als Synthese aus C awk den Unix Befehlen und anderen Einflussen Ursprunglich als Werkzeug zur Verarbeitung und Manipulation von Textdateien insbesondere bei der System und Netzwerkadministration vorgesehen zum Beispiel fur die Auswertung von Logdateien hat Perl auch bei der Entwicklung von Webanwendungen und in der Bioinformatik weite Verbreitung gefunden Traditionell vertreten ist Perl auch in der Finanzwelt vor allem bei der Verarbeitung von Datenstromen verschiedenartiger Nachrichtenquellen Hauptziele sind eine schnelle Problemlosung und grosstmogliche Freiheit fur Programmierer Die Bearbeitung von Texten mit Hilfe regularer Ausdrucke und ein grosser Gestaltungsspielraum sind Starken der Sprache Inhaltsverzeichnis 1 Geschichte 1 1 Entstehung 1 2 Name 1 3 Perl 1 bis 4 1 4 Perl 5 1 4 1 Ab Perl 5 10 1 4 2 Aktuelle Versionen 1 5 Raku Perl 6 2 Merkmale 2 1 Prinzipien 2 1 1 Mehrere Wege 2 1 2 Einfach und moglich 2 1 3 Kontextsensitiv 2 2 Technische Merkmale 2 3 Verbreitung 2 4 Perl und andere Programmiersprachen 2 5 Logos 3 Syntax 3 1 Freies Format 3 2 Variablen 3 3 Kontrollstrukturen 3 3 1 Bedingte Ausfuhrung 3 3 2 Schleifen 3 3 3 Nachgestellte Kontrollstrukturen 3 4 Regulare Ausdrucke 3 5 Quoting und Interpolation 4 Kritik 5 Perl Kultur und Spass 5 1 Gemeinschaft 5 2 Treffen Workshops und Konferenzen 5 3 Disziplinen 5 4 Mottos und Zitate 6 Auszeichnungen 7 Literatur 8 Weblinks 9 EinzelnachweiseGeschichte BearbeitenEntstehung Bearbeiten nbsp Larry Wall entwarf Perl Larry Wall war als Administrator und Programmierer bei dem Unternehmen Unisys angestellt wo er seit Marz 1987 daran beteiligt war unter dem Namen blacker ein sicheres Netzwerk fur die NSA zu entwickeln Er erhielt mehrere Auftrage Werkzeuge zur Uberwachung und Fernwartung der entstehenden Software zu schaffen Eine Hauptaufgabe war dabei ubersichtliche Berichte aus verstreuten Logdateien zu erzeugen Da ihm die vorhandenen Sprachen und Werkzeuge dafur zu umstandlich erschienen entwickelte er mit Hilfe seines damaligen Teamkollegen Daniel Faigin und seines Schwagers Mark Biggar schrittweise eine eigene Sprache um seine Aufgaben zu losen Dabei griff er auch auf sein Wissen und seine Erfahrung als Linguist zuruck und entwarf Perl nahe an den menschlichen Sprachgewohnheiten Dies druckt sich in minimalen Voraussetzungen fur Einsteiger einer starken Kombinierbarkeit der Sprachelemente und einem reichen Wortschatz aus der auch Befehle zulasst deren Bedeutungen sich uberschneiden Wall sieht darin die Bedurfnisse eines Praktikers nach Freiheit und intuitivem Ausdruck verwirklicht Gemass diesem praktischen Ansatz borgte sich Perl seinen Wortschatz und seine logischen Strukturen von den in den 1980er Jahren unter Unix verbreiteten Sprachen und Werkzeugen was das Erlernen vereinfachte aber auch die Unix Philosophie umkehrte Unix und seine Systembefehle waren kompiliert und meist in C geschrieben Diese Befehle waren logische Einheiten und sollten genau eine Aufgabe beherrschen Do one thing and do it well Mach genau eine Sache und mach sie gut Interpretierte Shell Skripte kombinierten schnell und einfach die Befehle die untereinander ihre Ergebnisse durch Pipes weiterreichen konnten Perl verletzt diese Philosophie indem es diese Befehle zum Bestandteil der Programmiersprache macht also C und Shell vereint und die vorhandenen Befehle und Werkzeuge ubergeht Dies wurde notwendig weil Shell Skripte fur komplexe Aufgaben ungeeignet waren Ihr Ablauf ist sehr einfach sie konnen Daten nur eingeschrankt zwischenspeichern und die Pipes sind Flaschenhalse beim Datenaustausch Andererseits erlauben sie einen wesentlich kompakteren Programmierstil da die Benutzung eines UNIX Werkzeugs viele Zeilen C Quelltext ersetzen kann Um die Vorteile beider Programmierarten nutzen zu konnen schuf Wall eine Kombination aus C und Werkzeugen wie sed awk grep und sort Er fugte Eigenschaften der Bourne Shell in geringem Masse auch Elemente aus Pascal und BASIC sowie eigene Ideen dazu 5 Diese Fusion ermoglichte kurze machtige Programme die man schnell schreiben und jederzeit auch testen konnte ohne sie kompilieren zu mussen was die Entwicklung ebenfalls beschleunigte Spater wurden weitere Fahigkeiten von Sprachen wie Lisp Smalltalk Python oder Ruby importiert Name Bearbeiten Der Name Perl bezieht sich auf ein Zitat aus dem Matthaus Evangelium Mt 13 46 EU 6 in dem Jesus das Himmelreich mit dem Bild eines Handlers beschreibt der seinen gesamten Besitz verkaufen will um eine kostbare Perle zu erwerben Noch vor der Veroffentlichung wurde der Name von Pearl in Perl geandert da es bereits eine Programmiersprache namens PEARL gab Allgemein verbreitet und von Larry Wall akzeptiert sind auch die Backronyme Practical Extraction and Report Language zweckmassige Extraktions und Berichtssprache und Pathologically Eclectic Rubbish Lister krankhaft stilmischender Blodsinnsauflister Die Schreibweise Perl bezeichnet die Sprache perl dagegen das Programm das diese Sprache interpretiert Ferner legt die Perl Gemeinde Wert darauf dass nicht die Schreibweise PERL verwendet wird da es sich nun mal nicht um ein Akronym handelt 7 Perl 1 bis 4 Bearbeiten nbsp Larry Wall war zu dieser Zeit Angestellter des Jet Propulsion Laboratory JPL Am 18 Dezember 1987 8 publizierte Larry Wall sein Programm im Usenet als Perl 1 0 das damals noch eine machtigere Shell war die gut mit Texten und Dateien umgehen andere Programme steuern und gut lesbare Berichte ausgeben konnte Bereits am 5 Juni im Jahr darauf erschien die Version 2 0 mit grunderneuerter und erweiterter Regex Engine und einigen weiteren Verbesserungen Am 18 Oktober 1989 folgte Perl 3 das mit binaren Daten umgehen konnte und auch Netzwerkprogrammierung ermoglichte Als neue Lizenz wurde die GPL gewahlt Fast unverandert war es ab dem 21 Marz 1991 als Perl 4 erhaltlich jedoch nun wahlweise unter der GPL oder der von Larry Wall entwickelten Artistic License Der eigentliche Grund fur die neue Version war aber das gleichzeitig erschienene Kamelbuch das als Referenz fur den aktuellen als Version 4 markierten Stand veroffentlicht wurde Bis dahin waren die seit Perl 1 verfugbaren UNIX man pages die einzige verfugbare Dokumentation Diese bieten zu jedem Thema eine fundierte und umfangreiche Abhandlung aber keinen einfachen Einstieg fur Perl Anfanger Diese Lucke sollte das von Randal L Schwartz Larry Wall und Tom Christiansen verfasste Buch schliessen Es erschien im O Reilly Verlag der mit diesem und weiteren Titeln als renommierter Fachverlag fur Programmierer bekannt wurde Perl Bucher von O Reilly wurden die massgeblichen Publikationen was sich erst im neuen Jahrtausend etwas relativierte Der Verlag betrieb auch unter der Internetadresse perl com das meistbesuchte Online Magazin fur Perl Programmierung und veranstaltet mit der TPC The Perl Conference heute OSCON die grosste Perl Konferenz O Reilly profitierte von Perls wachsender Popularitat und im Gegenzug bezahlte Tim O Reilly seinem Freund Larry Wall in den folgenden Jahren ein festes Gehalt der sich so ohne weitere Pflichten oder Vorgaben der Weiterentwicklung der Sprache widmen konnte 1993 als Perl die Version 4 036 erreichte brach Larry Wall die Weiterentwicklung ab und entwickelte Perl 5 vollstandig neu Perl 5 Bearbeiten nbsp CPAN Eines der grossten Archive freier SoftwarePerl 5 0 wurde am 18 Oktober 1994 veroffentlicht und war der bis dahin grosste Fortschritt fur die Sprache Mit Plain Old Documentation konnte man nun formatierte Dokumentation in den Quelltext einfugen Auch liess sich die Sprache ab jetzt durch separate Module erweitern was im folgenden Jahr zur Entstehung des CPAN fuhrte Dieses grosse Archiv frei erhaltlicher Module wurde schliesslich selbst ein wichtiger Grund Perl einzusetzen Eine weitere wichtige Neuerung war die Einfuhrung von Referenzen die erstmals eine einfache Erstellung zusammengesetzter Datenstrukturen erlaubte Mit Version 5 wurde es auch moglich objektorientiert in Perl zu programmieren Dabei wahlte Larry Wall einen ungewohnlichen Weg und leitete die dafur verwendete Syntax fast ausschliesslich aus vorhandenen Sprachelementen ab Packages Package Funktionen und Package Variablen sowie den neuen Referenzen Lediglich die Funktion bless zum Anlegen eines Objektes und der Pfeil Operator gt zum Aufruf von Methoden kamen hinzu der Pfeil Operator ist eigentlich der Dereferenzierungsoperator der aus einem Objekt das aus einer Referenz auf die Klasse besteht eine bestimmte Methode dereferenziert Es entstand auch XS eine Schnittstellenbeschreibungssprache die es ermoglicht Perl Programme mit anderen Sprachen zu erweitern oder mit Perl Programmen beliebige Software oder Hardware anzusprechen Seit der Veroffentlichung von Perl 5 beteiligte sich Larry Wall kaum noch an der Entwicklung der Sprache Dies ubernahmen freiwillig Perl begeisterte Programmierer die sogenannten Perl 5 Porters die uber die im Mai 1994 gegrundete p5p Mailingliste kommunizieren aber auch zunehmend uber einen eigenen Bug und Request Tracker RT uber Fehlerbehebungen und neue Funktionen der Sprache entscheiden Dabei ubernimmt je Version ein sogenannter Pumpking die Leitung Der Begriff Perl Porter entstammt der ursprunglichen Aufgabe der p5p Liste die Portierung von Perl auf andere Betriebssysteme zu koordinieren In den Jahren nach Version 5 0 wurde nicht nur Perl auf Macintosh und Windows portiert sondern es verschob sich auch die Nummerierung der Versionen Da sich an der Syntax nichts Wesentliches anderte beliess man die 5 und erhohte bei grosseren Meilensteinen die erste Nachkommastelle verwendete aber zusatzliche Nummern um die Zwischenschritte zu zahlen Da Perl erst ab 5 6 mit Versionsnummern die mehrere Kommata enthalten umgehen konnte wurden sie bis dahin z B Perl 5 001 oder Perl 5 001012 geschrieben Ab 5 6 wurde auch das damals von Linux verwendete Versionsschema ubernommen bei dem gerade Nummern auf Fehlerfreiheit gepflegte Benutzerversionen hindeuten und ungerade auf Entwicklerversionen in die neue Funktionen einfliessen Serien von Benutzerversionen z B 5 8 x werden untereinander binar kompatibel gehalten was bedeutet dass ein fur Perl 5 8 7 kompiliertes Binarmodul auch mit 5 8 8 nicht jedoch zwingend mit 5 10 oder 5 6 1 funktioniert Perl 5 6Diese Version brachte am 22 Marz 2000 einige neue experimentelle Fahigkeiten die erst spater ausreiften wie Unicode und UTF 8 Threads und cloning Auch 64 Bit Prozessoren konnten nun genutzt werden Sprachlich fugte diese von Gurusamy Sarathy geleitete Reihe vor allem lexikalisch globale Variablen mit our und eine Vektorschreibweise die den Vergleich mehrstelliger Versionsnummern erlaubt sowie die Spezialvariablen und ein Perl 5 8Mit der am 18 Juli 2002 von Nicholas Clark betreuten Reihe 5 8 x wurden vor allem die Probleme mit Unicode und den Threads behoben aber auch die Ein Ausgabe IO Signale und die numerische Genauigkeit wurden entscheidend verbessert Ab Perl 5 10 Bearbeiten Neben verringertem Speicherverbrauch und einer erneuerten und nun auch austauschbaren Regex Maschine brachte diese Version am 18 Dezember 2007 unter der Fuhrung von Rafael Garcia Suarez vor allem Neuerungen die dem Entwurf von Perl 6 entstammen und deren Gebrauch entweder einzeln oder kollektiv mit use feature 5 10 angemeldet werden muss oder kurzer use v5 10 Dies gilt ab dieser Version fur alle Funktionen welche die Kompatibilitat brechen konnten Hierzu zahlen say given und when analog zur switch Anweisung in C der smartmatch Operator der defined or Operator und state Variablen welche die Erzeugung von Closures vereinfachen Weitere nennenswerte Neuheiten umfassen den verlagerbaren Installationspfad stapelbare Dateitestoperatoren definierbare lexikalische Pragmas optionale C3 Serialisierung der Objektvererbung und field hashes fur inside out Objekte Die Regex Engine arbeitet nun iterativ statt rekursiv was rekursive Ausdrucke ermoglicht Komplexe Suchanfragen konnen nun auch verstandlicher und weniger fehleranfallig durch named captures formuliert werden Die Spezialvariablen und sowie die Interpreterschnittstellen perlcc und JPL wurden entfernt Im folgenden Jahr wurden die Quelle von Perforce auf Git umgestellt was die Entwicklung und Herausgabe neuer Versionen wesentlich vereinfachte Perl 5 12Diese von Jesse Vincent geleitete Version vom 12 April 2010 beinhaltet weit weniger grosse und sichtbare Veranderungen als 5 10 use v5 12 impliziert use strict und use feature unicode strings wodurch alle Befehle Strings als Unicode behandeln Unter den technischen Verbesserungen sind besonders der aktualisierte Unicode 5 2 DTrace Unterstutzung und Sicherheit von Datumsangaben jenseits von 2038 hervorzuheben suidperl wurde entfernt Aus Perl 6 wurden der Ellipsen Operator yada yada und die Regex Escape Sequence N ubernommen Modulversionen konnen jetzt von package und use verwaltet werden Ebenfalls neu ist die Moglichkeit eigene Schlusselworter durch Perlroutinen zu definieren Dies ist allerdings als experimentell markiert und kann sich andern Fur bessere Planbarkeit und Zusammenarbeit mit Distributionen erscheint ab 5 Dezember 2000 am 20 jedes Monats eine Entwicklerversion alle 3 Monate eine kleine Benutzerversion und jedes Jahr eine grosse Perl 5 14Ab 14 Mai 2011 erleichtern neue Modifikatoren und Steuerzeichen den Umgang mit Unicode der auf den Stand 6 0 gebracht wurde Built ins fur Listen und Hashes dereferenzieren automatisch autoderef und weite Teile der Dokumentation wurden uberarbeitet oder neu geschrieben Auch die Unterstutzung von IPv6 wurde verbessert sowie das Anbinden von Multithread Bibliotheken erleichtert Perl 5 16Die am 20 Mai 2012 herausgegebene Version beinhaltet zahlreiche syntaktische Glattungen in Teilen erneuerte Dokumentation und den Wechsel zu Unicode 6 1 Die Leitung hatte Jesse Vincent und ab November 2011 Ricardo Signes Durch einen neu eroffneten Spendentopf der Perl Foundation konnten zudem zwei langjahrige Entwickler dazu verpflichtet werden undankbare Aufgaben zum Abschluss zu fuhren und den Build Prozess zu vereinfachen Einzige grundlegend neue Funktionalitat ist das mit use feature current sub oder use v5 16 zuschaltbare Token SUB eine Referenz auf die aktuelle Routine Perl 5 18Die am 18 Mai 2013 erschienenen Funktionalitaten lexikalische Subroutinen lexical subs und mit Mengenfunktionen erzeugte Zeichenklassen innerhalb regularer Ausdrucke sind beide experimentell Solche Funktionen zu denen auch lexikalische Kontextvariablen lexical topic und der Smartmatch Operator gehoren erzeugen jetzt Warnhinweise die mit no warnings experimental funktionsname oder no warnings experimental abgeschaltet werden konnen Die Hashes wurden konsequent randomisiert um Programme besser gegen DoS Attacken zu schutzen Perl 5 20Ebenfalls unter der Fuhrung von Ricardo Signes kamen am 27 Mai 2014 die experimentellen Funktionalitaten der Subroutinen Signaturen signatures und postderef eine alternative Postfix Syntax zum Dereferenzieren Das mit 5 14 aufgenommene autoderef wurde als experimentell herabgestuft Unicode 6 3 wird unterstutzt und mit drand48 hat Perl nun einen eigenen plattformunabhangig guten Zufallszahlengenerator String und Arraygrossen sind jetzt 64 Bit Werte Perl 5 22Mit dem 1 Juni 2015 kamen der Doppeldiamantoperator lt lt gt gt bitweise Stringoperatoren amp ein strict Modus fur regulare Ausdrucke use re strict re strict Unicode 7 0 Aliasing von Referenzen refaliasing und konstante Routinen const attr die stets den mit der ersten Kompilierung ermittelten konstanten Wert liefern Alle benannten Funktionalitaten Name in Klammern sind vorerst experimentell Perl 5 24brachte am 9 Mai 2016 Beschleunigungen fur Blocke und numerische Operationen sowie Unicode 8 0 Die Features postderef und postderef qq wurden angenommen autoderef und lexical topic entfernt Perl 5 26Unter Leitung von SawyerX wurde am 30 Mai 2017 die Regex Option xx einruckbare Here Dokumente und Unicode 9 0 eingefuhrt Das Feature lexical subs wurde angenommen und das aktuelle Verzeichnis wurde aus Sicherheitsgrunden standardmassig aus INC der Liste von Suchpfaden fur Module entfernt Perl 5 28Erschien am 22 Juni 2018 Nebst Unicode 10 0 erhielt Perl alpha assertions in Lang und Kurzfassungen Das sind Aliase fur besondere Regex Gruppen mit sprechenden Namen zum Beispiel anstatt nun auch positive lookahead oder pla script run oder sr wurde eingefuhrt um einheitlich kodierten Text zu erkennen was hilft Angriffen durch manipulierte Eingaben auszuweichen Drei kritische Sicherheitslucken wurden geschlossen mehrfache Dereferenzierungen und Zusammenfuhrungen von Zeichenketten beschleunigt sowie die Operatoren amp sind nicht mehr experimentell Ausserdem wurde beschlossen im Dokument perldeprecation daruber Buch zu fuhren wann welche Funktion mit 2 Versionen Vorwarnzeit entfernt wird Perl 5 30Aktualisierte am 22 Mai 2019 auf Unicode 12 1 fuhrte die Unicode Wildcard Properties ein und erlaubte einen lookbehind in der Lange zu begrenzen Entfernt wurden und File Glob glob sowie Variablendeklarationen in nachgestellten bedingten Ausdrucken Perl 5 32Fuhrte am 20 Juni 2020 verkettete Vergleichsoperatoren d lt e lt f den isa Operator pruft Klassenzugehorigkeit und Unicode 13 ein p name erlaubt es innerhalb einer Regex Ausdrucke zu Unicode Namen zu interpolieren Perl 5 34Am 20 Mai 2021 wurde eine Ausnahmebehandlung a la Try Tiny try in den Kern ubernommen und die alternative Schreibweise fur Oktaldarstellung von Literalen 0oddddd Die neue Dokumentationsseite perlgov schreibt den einen neuen Prozess fest nachdem sich die Perlgemeinschaft zukunftig selbsttatig ohne den Einfluss von Larry Wall regiert Perl 5 36Ricardo Signes verkundete am 28 Mai 2022 Ausnahmen mit finally Blocken defer Blocke for Schleifen mit mehreren Laufvariablen Unicode 14 sowie eine neue Klasse an Hilfsfunktionen welche uber das Pragma builtin importiert werden Signaturen und Mengenoperationen auf Zeichenklassen wurden stabil markiert und use v5 36 aktiviert das Pragma warnings sowie deaktiviert indirekte Methodenaufrufe x new Class sowie die aus Perl 4 belassenen simulierten verschachtelten Hashes Perl 5 38Mit 2 Juli 2023 kam eine Objektorientierung die mit den Schlusselworten class method und field arbeitet und die bisherige nicht ersetzt Eingefuhrt wurden auch die Spezialvariablen ENV PERL RAND SEED LAST SUCCESSFUL PATTERN und HOOK sowie die buitins is tainted und export lexically Aktuelle Versionen Bearbeiten Auch wenn die neueste Benutzerversion 5 38 0 lautet wird derzeit die Versionsreihe 5 36 x weiterhin gepflegt aktuell ist 5 36 1 Die Versionen 5 34 1 5 32 1 5 30 3 5 28 3 5 26 3 5 24 4 5 22 4 5 20 3 5 18 2 5 16 3 5 14 4 5 12 5 5 10 1 und 5 8 9 sind Schlusspunkte ihrer Reihe sicherheitsrelevante Verbesserungen werden noch bis zu 3 Jahre nach Veroffentlichung einer Version nachgereicht Bei Kernmodulen wird meist auf eine Kompatibilitat bis zu 5 6 geachtet bei wichtigen CPAN Modulen meist 5 8 3 Anderungen finden im Entwicklerzweig mit ungerader Versionsnummer statt aktuell 5 35 x der nicht fur allgemeine Benutzung bestimmt ist Da sich Perl 6 zu einer eigenstandigen Sprache entwickelt hat wird die nachste grosse Version Perl 7 heissen Raku Perl 6 Bearbeiten Perl 6 das 2020 zu Raku umbenannt wurde ist eine Schwestersprache deren Interpreter und die umgebende Infrastruktur vollstandig neu entworfen wurden Merkmale BearbeitenPrinzipien Bearbeiten Perl wurde fur den praktischen Einsatz entwickelt und konzentriert sich daher auf schnelle und einfache Programmierbarkeit Vollstandigkeit und Anpassbarkeit Diese Philosophie druckt sich in den folgenden Schlagworten oder Phrasen aus die meist von Larry Wall stammen Mehrere Wege Bearbeiten Das bekannteste und grundlegendste Perl Motto ist There is more than one way to do it deutsch Es gibt mehr als einen Weg etwas zu tun was meist zu TIMTOWTDI selten TMTOWTDI oder mit englischer Kontraktion Tim To a dy verkurzt wird 9 Perl macht im Gegensatz zu Sprachen wie Python weniger Vorgaben und bietet absichtlich fur jedes Problem mehrere Formulierungs und Losungsmoglichkeiten Syntaktischer Zucker Zum Beispiel kann man logische Operatoren als und amp amp wie in C oder mit Bedeutungsnuancen als or und and wie in Pascal schreiben aber auch zahlreiche Befehle mit einem sich uberschneidenden Funktionsumfang wie map und for erlauben verschiedene Formulierungen fur den gleichen Sachverhalt Einige Befehle wie der Diamant Operator lt gt bieten verkurzte Schreibweisen fur bereits vorhandene Funktionalitat hier ware mit leichten Unterschieden lt STDIN gt aquivalent was jedoch viel langer zu schreiben ware Diese Vielfalt wird auch im CPAN sichtbar wo oft mehrere Module einen sehr ahnlichen Zweck erfullen oder einen der ebenso wenn auch umstandlicher ad hoc implementiert werden konnte Beispiel Getopt Long 10 Ein weiteres Schlagwort das man auch als Erweiterung von TIMTOWTDI sehen kann bezeichnet Perl als die erste postmoderne Programmiersprache Damit ist gemeint dass Perl verschiedene Paradigmen vereint und es dem Benutzer freisteht strukturierte objektorientierte funktionale und imperative Sprachmerkmale zu kombinieren Einfach und moglich Bearbeiten Der andere wichtige Merksatz ist Perl makes easy jobs easy and hard jobs possible was zu deutsch bedeutet Perl halt die einfachen Aufgaben einfach und macht die Losung schwierige r Aufgaben moglich Dies beinhaltet zum ersten das Ziel gangige Aufgaben moglichst mit kurzen fertigen Losungen zu vereinfachen Zum Beispiel pruft e i dateiname i die Existenz einer Datei Einfache Aufgaben einfach zu belassen bedeutet fur Perl aber auch moglichst keine vorbereitenden Programmieranweisungen zu verlangen wie das Anmelden von Variablen oder das Schreiben einer Klasse Zweitens versucht Perl vollstandig zu sein und fur jedes Problem mindestens die Grundlagen bereitzustellen die eine Losung moglich machen Das dritte Ziel die ersten beiden Ziele nicht kollidieren zu lassen gewinnt mit dem wachsenden Sprachumfang von Perl 6 immer mehr an Bedeutung wo in Anlehnung an den Huffman Code die Schreibweisen der am haufigsten verwendeten Befehle moglichst kurz gehalten sind ohne mit der Logik der Schreibweise ahnlicher Befehle zu brechen Kontextsensitiv Bearbeiten In Perl gibt es Befehle die verschiedene Bedeutungen haben je nachdem in welchem Zusammenhang sie benutzt werden Derart kontextsensitiv sind Datenstrukturen wie das Array Wird es einem anderen Array zugewiesen wird dessen Inhalt ubergeben ist der Empfanger ein einzelner Wert Skalar erhalt dieser die Lange des Arrays Technische Merkmale Bearbeiten Der Perl Interpreter selbst ist ein in C geschriebenes Programm das auf annahernd jedem Betriebssystem kompilierbar ist Vorkompilierte Versionen auf selten verwendeten Systemen wie zum Beispiel BeOS oder OS 2 sind jedoch nicht immer auf dem neuesten Stand Der Quellcode umfasst circa 50 MB und enthalt auch Perl Skripte die die Funktion von Makefiles und der Test Suite ubernehmen Typischerweise ist das kompilierte Programm circa 850 KB gross was aber je nach Betriebssystem verwendetem Compiler und Bibliotheken variieren kann Perl Skripte werden in Textdateien mit beliebigem Zeilentrennzeichen gespeichert Beim Start eines Skripts wird es vom Perl Interpreter eingelesen in einen Parse Tree umgewandelt dieser zu Bytecode welcher dann ausgefuhrt wird Der im Interpreter integrierte Parser ist eine angepasste Version von GNU Bison Strenggenommen ist Perl daher keine interpretierte Sprache da ein Perl Programm vor jeder Ausfuhrung kompiliert wird Das fuhrt etwa dazu dass anders als bei rein interpretierten Sprachen ein Programm mit Syntaxfehlern oder fehlenden Abhangigkeiten nicht startet Verbreitung Bearbeiten Zu Beginn war Perl ein UNIX Werkzeug das besonders auf die Verarbeitung von Textdateien Steuerung anderer Programme sowie zur Ausgabe von Berichten ausgelegt war Dafur wird es bis heute nicht nur von Systemadministratoren auf allen verbreiteten Betriebssystemen eingesetzt Dabei bekam Perl auch den Ruf einer glue language Klebstoff Sprache weil mit Hilfe von relativ schnell geschriebenen Perl Skripten inkompatible Software verbunden werden kann Bis heute gehort Perl auf allen POSIX kompatiblen und Unix ahnlichen Systemen zur Grundausstattung Mit der Verbreitung des World Wide Web wurde Perl zunehmend benutzt um Webserver Datenbanken und weitere Programme und Daten zu verbinden und die Ergebnisse in Form von HTML Seiten auszugeben Der Perl Interpreter wird dabei uber CGI oder FastCGI vom Webserver angesprochen oder ist direkt im Server eingebettet mod perl im Apache ActiveState PerlEx im Microsoft IIS Auch wenn fur diese serverseitige Skript Programmierung PHP mittlerweile popularer wurde wird Perl weiterhin von vielen grossen und kleinen Seiten und Internetdiensten wie Amazon com IMDb com slashdot org Movable Type LiveJournal und Xing verwendet Da Perl Skripte oft kaum erkennbar an vielen wichtigen Stellen arbeiten wurde Perl auch scherzhaft als das Klebeband bezeichnet welches das Internet zusammenhalt In Perl entstanden auch Frameworks wie Mason Catalyst Jifty Mojolicious und Dancer die eine sehr schnelle Entwicklung komplexer und leicht veranderbarer Webseiten erlauben Auch Wiki Software ist haufig in Perl geschrieben wie z B Socialtext welches auf Mason basiert Kwiki TWiki Foswiki ProWiki oder UseMod Auch verbreitete Ticket Systeme mit Webschnittstelle wie Bugzilla oder RT sind in Perl geschrieben Jedoch sind WWW Anwendungen weiterhin nur eines der vielen Einsatzgebiete von Perl Wichtige Perl Programme im E Mail Bereich sind SpamAssassin Spam Filter PopFile und open webmail Zur Systemverwaltung wird Perl zum Beispiel in debconf einem Teil der Paketverwaltung des Betriebssystems Debian benutzt Weitere Hauptanwendungsfelder sind das Data Munging und die Bioinformatik wo Perl seit etwa 1995 die am haufigsten verwendete Sprache war und immer noch bedeutend ist Grunde hierfur sind wieder die Fahigkeit Informationen in Textform zu verarbeiten und die Flexibilitat und Offenheit der Sprache die es der internationalen Forschergemeinde erlauben trotz unterschiedlicher Standards der Institute zusammenzuarbeiten BioPerl ist hier die wichtigste Sammlung frei erhaltlicher Werkzeuge die sich vor allem auf das Gebiet der Genomsequenzenanalyse konzentriert Beim Human Genome Project spielte Perl eine wichtige Rolle Auch Desktop Anwendungen und Spiele wie Frozen Bubble konnen in Perl geschrieben werden Die heutigen Computer sind schnell genug diese Programme flussig auszufuhren Bereiche in denen Skriptsprachen wie Perl nicht sinnvoll eingesetzt werden konnen sind zum einen Anwendungen mit hohen Anforderungen an Hardware Nahe oder Geschwindigkeit wie zum Beispiel Treiber oder Codecs Zum anderen sollten sie nicht in stark sicherheitskritischen Bereichen z B Flugzeugsteuerung Verwendung finden da aufgrund der laxen Syntaxprufung z B fehlendes sehr schwaches Typsystem viele Fehler erst zur Laufzeit auftreten und eine Verifizierung im Allgemeinen nicht moglich ist Perl Portierungen existierten fur uber 100 Betriebssysteme 11 Perl und andere Programmiersprachen Bearbeiten Fur Aufgaben die mit Perl nur schwierig oder langsam losbar sind bietet Perl mit dem Modul Inline 12 eine Schnittstelle an uber die Programmteile in anderen Sprachen in ein Perl Programm eingebunden werden konnen Unterstutzte Sprachen sind u a C C Assembler Java Python Ruby Fortran und Octave 13 Anwendungsgebiete sind z B rechenintensive Formeln C Assembler Losung komplexer Probleme mit existierenden Systemen Octave Fortran Bibliotheken und zusammenfuhren von Anwendungen in unterschiedlichen Sprachen Glue Funktion von Perl Die Anwendung von Inline ist relativ einfach und gut dokumentiert Bei kompilierten Programmteilen fuhrt Inline mittels MD5 Kennung Buch uber den Versionsstand wodurch Mehrfachkompilierung des gleichen Codes vermieden wird Bei Inline erfordert die Ubergabe der Parameter und Ruckgabe der Ergebnisse einigen Aufwand Bei kurzen Berechnungen uberwiegt dieser Aufwand den Gewinn an Geschwindigkeit Wird zum Beispiel die Mandelbrot Menge berechnet indem die Formel z c z 2 displaystyle z mapsto c z 2 nbsp uber Inline als C Funktion berechnet die Iteration aber in Perl belassen verlangsamt sich die Programmausfuhrung gegenuber einer reinen Perl Implementierung Wird hingegen auch die Iterationsschleife in C ausgelagert steigert sich die Performance signifikant Logos Bearbeiten nbsp Tim O Reilly zahlte viele Jahre zu Perls wichtigsten Unterstutzern Sein Verlag halt die Rechte am vielleicht wichtigsten Perl Logo dem Kamel Als Maskottchen von Perl dient ein Dromedar Es zierte erstmals den Umschlag des auch als Kamelbuch bekannten Referenzwerkes Programming Perl Sein Verleger Tim O Reilly sagte in einem Interview scherzhaft als Begrundung Perl ist hasslich und kommt uber lange Strecken ohne Wasser aus Das Dromedar ist auf dem Programming Republic of Perl Emblem zu sehen das oft als offizielles Perl Logo angesehen wird und dessen nichtkommerziellen Gebrauch O Reilly gestattet Andere im Zusammenhang mit Perl benutzte Logos sind neben Perlen die aufgeschnittene Zwiebel Erkennungszeichen der Perl Foundation und der Komodowaran der die weit verbreitete Perl Distribution ActivePerl von ActiveState schmuckt Syntax BearbeitenFreies Format Bearbeiten Perl erlaubt bedingt formatfreien Quellcode Das bedeutet dass Einruckungen und zusatzliche Leerzeichen syntaktisch unerheblich sind und auch Zeilenumbruche nach Belieben eingefugt werden konnen Dafur mussen Befehle eines Blocks mit Semikolon getrennt werden Einige Sprachelemente wie Formate heredocs und gewohnliche regulare Ausdrucke sind nicht formatfrei Variablen Bearbeiten Charakteristisch fur Perl ist dass Variablen durch ein Prafix auch Sigil genannt gekennzeichnet werden das ihren Datentyp anzeigt Hier einige Beispiele fur Skalare scalar fur Arrays array fur Hashes assoziative Arrays hash amp fur Funktionen oft optional amp function fur Typeglobs allDatei Handles Verzeichnis Handles und Formate besitzen kein Prafix sind aber ebenfalls eigenstandige Datentypen Jeder Datentyp hat in Perl seinen eigenen Namensraum Basisdatentypen in Perl sind skalare Variablen Arrays und Hashes assoziative Arrays Skalare sind typlose Variablen fur einzelne Werte es konnen Strings Zahlen Ganz Gleitkomma oder Referenzen auf andere Daten oder Funktionen in ihnen gespeichert sein Strings und Zahlen werden bei Bedarf automatisch und transparent ineinander umgewandelt eine grosse Besonderheit von Perl Arrays fassen mehrere Skalare unter einem Variablennamen zusammen Arrayeintrage haben einen Index Die Zahlung beginnt bei 0 wenn nichts anderes definiert wurde Hashes fassen ebenfalls Skalare zusammen allerdings werden hier Einzelwerte Values nicht uber numerische Indizes sondern mit Hilfe zugehoriger Keys Schlussel eindeutig identifiziert und angesprochen Als Schlussel kann man eine beliebige Zeichenkette benutzen oder auch alles was sich in eine Zeichenkette umwandeln lasst Hashes und Arrays lassen sich einander zuweisen wobei Hashes als Listen von Key Value Paaren betrachtet werden Daten verschiedenen Typs lassen sich mittels Referenzen beliebig zu neuen Datenstrukturen kombinieren beispielsweise sind Hashes denkbar die neben Referenzen auf Arrays auch einzelne Skalare enthalten Package Variablen werden automatisch erstellt sobald sie das erste Mal verwendet werden Weitaus haufiger im modernen Sprachgebrauch kommen gultigkeitsbeschrankte Variablen zum Einsatz Diese mussen mittels my deklariert werden our macht eine Variable im gesamten Programm verfugbar undef i variable i gibt die angegebene Variable wieder frei Kontrollstrukturen Bearbeiten Die grundlegenden Kontrollstrukturen unterscheiden sich kaum von denen in C Java und JavaScript Bedingte Ausfuhrung Bearbeiten if funktioniert wie aus C bekannt unless lt Bedingung gt eine Besonderheit von Perl ist eine Schreibweise fur if lt Bedingung gt Eine Case oder Switch Anweisung given when gibt es erst ab Perl 5 10 vorher musste man diese Struktur mit if elsif else nachbilden Jedoch setzt given die Kontextvariable wie for und when wendet smartmatch darauf an was dieses Konstrukt ungleich vielfaltiger einsetzbar macht als traditionelle Case Befehle Das optionale default entspricht hier einem else Die optimierten logischen Operatoren erlauben auch eine bedingte Ausfuhrung Bei or bzw wird der zweite Ausdruck ausgefuhrt wenn das Ergebnis des ersten kein wahrer Wert ist and bzw amp amp funktioniert analog if lt Bedingung gt lt Anweisungen gt elsif lt Bedingung gt lt Anweisungen gt else lt Anweisungen gt unless lt Bedingung gt lt Anweisungen gt else lt Anweisungen gt given lt variable gt when lt Wert gt lt Anweisungen gt default lt Anweisungen gt lt Bedingung gt lt Anweisung1 gt lt Anweisung2 gt lt Ausdruck1 gt lt Ausdruck2 gt lt Ausdruck1 gt amp amp lt Ausdruck2 gt Schleifen Bearbeiten Wie in C iterieren while und for in der an C angelehnten Variante solange die Bedingung wahr ist until bis sie wahr ist und foreach iteriert uber eine Liste In Perl 5 sind for und foreach austauschbar label while lt Bedingung gt lt Anweisungen gt continue lt Anweisungen gt label until lt Bedingung gt lt Anweisungen gt continue lt Anweisungen gt label for lt Startanweisung gt lt Bedingung gt lt Updateanweisung gt lt Anweisungen gt continue lt Anweisungen gt label for each my element lt Liste gt lt Anweisungen gt continue lt Anweisungen gt last verlasst sofort die Schleife redo wiederholt die derzeitige Iteration und next springt zum continue Block bevor es dann mit der nachsten Iteration fortfahrt Diese Befehle konnen von einem Label Bezeichner gefolgt sein der bei geschachtelten Strukturen bestimmt auf welche Schleife sich der Befehl bezieht do lt Anweisungen gt while lt Bedingung gt Spezialfall in dieser Form do lt Anweisungen gt until lt Bedingung gt mindestens eine Ausfuhrung Nachgestellte Kontrollstrukturen Bearbeiten Die oberhalb aufgezahlten Kontrollstrukturen beziehen sich auf einen Block mit mehreren Anweisungen Bei einzelnen Anweisungen kann man auch die verkurzte nachgestellte Schreibweise wahlen die auch den englischsprachigen Lesern das Verstandnis durch naturlichsprachige Formulierung erleichtert lt Anweisung gt if lt Bedingung gt lt Anweisung gt unless lt Bedingung gt lt Anweisung gt for lt Liste gt lt Anweisung gt while lt Bedingung gt lt Anweisung gt until lt Bedingung gt Regulare Ausdrucke Bearbeiten Seit seinen Anfangen waren regulare Ausdrucke Regex ein besonderes Merkmal von Perl da ahnliche Fahigkeiten bis dahin meist nur spezialisierte Sprachen wie Snobol und awk hatten Durch die grosse Verbreitung setzte Perl einen inoffiziellen Standard der durch die von Perl unabhangige und auch teilweise abweichende Bibliothek PCRE aufgegriffen wurde die heute von mehreren bedeutenden Sprachen und Projekten verwendet wird Ab Version 5 0 hat Perl seine Regex Fahigkeiten um viele Funktionen wie z B Ruckwartsreferenzen erweitert Auch lassen sich regulare Ausdrucke in Perl wesentlich direkter als z B in Java mit dem Operator verwenden da sie Kernbestandteil der Sprache sind und nicht eine zuschaltbare Bibliothek Der eigentliche regulare Ausdruck wird mit Schragstrichen als Begrenzungszeichen notiert Weil Schragstriche haufig auch innerhalb regularer Ausdrucke vorkommen konnen durfen auch viele andere Zeichen zur Begrenzung verwendet werden Das verbessert die Lesbarkeit weil man so Zeichen wahlen kann die sich vom Inhalt des regularen Ausdrucks abheben Perl kennt zwei Befehle fur regulare Ausdrucke deren Verhalten mit vielen nachgestellten Optionen verandert werden kann Der m Befehl steht fur match was Ubereinstimmung bedeutet Das m kann weggelassen werden wenn man die Standardbegrenzungszeichen fur regulare Ausdrucke namlich Schragstriche verwendet Der folgende Ausdruck durchsucht den Inhalt der Variable var und liefert einen Array von Zeichenketten auf die der Suchausdruck passt Mit aktivierter g Option liefert die Suche im Listenkontext alle Funde deaktiviert alle erkannten Subausdrucke Im Skalarkontext liefert der Ausdruck einen positiven Wert wenn der Suchausdruck gefunden wurde mit c Option die Anzahl der Funde i lasst Gross und Kleinschreibung ignorieren o Variablen nur einmal interpolieren m den String als mehrzeilig und s als einzeilig betrachten Die x Option ermoglicht es den Suchausdruck der besseren Lesbarkeit wegen uber mehrere Zeilen zu verteilen und ihn mit Kommentaren zu versehen var m lt Suchausdruck gt g c i m o s x Der s Befehl steht fur substitute was ersetzen bedeutet Er ersetzt den Teil des gegebenen Textes auf den der Suchausdruck passt mit dem Ersatzausdruck var s lt Suchausdruck gt lt Ersatzausdruck gt e g i m o s x Nach erfolgreicher Verwendung eines regularen Ausdruckes stehen folgende Sondervariablen zur Verfugung amp der erkannte String String vor dem erkannten String String nach dem erkannten String 1 n Ergebnisse der geklammerten Subausdrucke der letzte erkannte Subausdruck Start Offsets der Treffer und Subtreffer dazugehorige End OffsetsDer oft in einem Atemzug mit m und s beschriebene Operator tr hat mit ihnen nur die Schreibweise gemein Er lehnt sich an den UNIX Befehl tr an der dem Ersetzen einzelner Zeichen dient Synonym kann statt tr auch y geschrieben werden var tr lt Suchzeichen gt lt Ersatzzeichen gt c d s Neben diesen beiden kann auch der Befehl split erwahnt werden der eine Zeichenfolge aufteilt anhand eines Trennzeichens das auch ein regularer Ausdruck sein darf Quoting und Interpolation Bearbeiten Quoting Operatoren q quote nicht interpretierter String alias zu qq quote interpretierter String alias zu qw quote words eine Liste von mit Whitespace Leerraum getrennten Strings qr quote oder kompiliere regex qx quote auszufuhrende externe Anwendung basierend auf Perls readpipe Alternatives Quoting und Variableninterpolation fuhren zu besonders gut lesbarem Code Ein Beispiel zur Verdeutlichung Stringverkettung und Quotingzeichen im Text machen den Code schlecht lesbar text He s my friend name from town name has worked in company company for years years Interpolation von Variablen im String machen das Ergebnis jetzt erkennbar Escapes storen noch den Textfluss text He s my friend name from town name has worked in company company for years years Austausch des Quotingzeichens macht Escapes uberflussig Der Code ist nun optimal qq leitet das Quoting von Variablen im String ein Das beliebige Zeichen danach ist das Quotingzeichen fur diesen String text qq He s my friend name from town name has worked in company company for years years Kritik BearbeitenHaufigster Kritikpunkt an Perl ist dass darin geschriebene Programme schlecht lesbar seien Zudem bietet Perl uberdurchschnittlich viele Freiheiten die zu unleserlichem Code fuhren konnen siehe Disziplinen Andererseits ermoglicht die gleiche Freiheit es auch nahe an der logischen Struktur des Problems oder dem menschlichen Verstandnis zu programmieren Die von Perl Programmierern geschatzte Freiheit personlichen Vorlieben nachzugehen muss bei Projekten die von mehreren Programmierern oder uber langere Zeitraume entwickelt werden durch selbst auferlegte Regeln eingeschrankt werden um spatere Probleme zu vermeiden Dies erfordert zusatzlichen Kommunikationsaufwand oder die Verwendung von statischen Code Analyse Tools wie Perl Critic Einige Teile der Syntax wie der Ausdruck der Objektorientierung und Signaturen sind zwar einfach und sehr machtig werden aber haufig gegenuber vergleichbaren Sprachen wie Python oder Ruby als veraltet wahrgenommen und fordern bei standardisierten Herangehensweisen besonders von Perl Anfangern zusatzliche Tipp und Denkarbeit Mit zusatzlichen Modulen lassen sich viele der Schwierigkeiten minimieren So gibt es mit English ein Core Modul das den Spezialvariablen aussagekraftigere Namen gibt und mit Moose ein sehr modernes und umfangreiches Objektsystem das sich stark an das von Raku anlehnt Es gilt heute als De facto Standard fur objektorientierte Programmierung mit Perl 14 Signaturen wurden mit 5 20 eingefuhrt sind aber immer noch als experimentell eingestuft Weiterhin wurde Perl vorgeworfen es verletze die UNIX Philosophie Siehe dazu den Abschnitt Entstehung Kritik wurde auch gegen Raku erhoben das zu hoch gesteckte Ziele habe und nach vielen Jahren keine sichtbaren Ergebnisse bringe stattdessen die Zukunft von Perl lahme Raku war von Anfang an als Langzeitprojekt ausgerufen das ausschliesslich auf nicht immer planbarer Freiwilligenarbeit und kaum finanzieller Unterstutzung beruht Seine konkreten Ziele zeichneten sich erst im Verlauf der Entwicklung ab und es gab eindeutige Probleme bei der Kommunikation und der Aussendarstellung Allerdings stammen seit Perl 5 10 wesentliche Neuerungen aus der Schwestersprache Zum 30 Geburtstag von Perl hiess es im Dezember 2017 in der iX die Sprache sei gegenuber dem Erfolg von Java PHP Ruby und Python zuruckgefallen und konne diesen Ruckstand mittlerweile nicht mehr aufholen Perls Ruf sei ruiniert Es gelte derzeit leider als Write once never read again Sprache gefuttert durch jahrelange Obfuscated ist cool Kultur und durch die Propagierung der schlimmsten Seiten von Perl Perl sei heute eine Nischensprache verfolgt von Liebhabern in ihrer Freizeit 15 Perl Kultur und Spass BearbeitenGemeinschaft Bearbeiten nbsp Logo der Perl FoundationWie auch bei anderen Projekten freier Software gibt es zwischen vielen Entwicklern und Benutzern der Sprache besondere soziale Bindungen und es bildete sich eine eigene Kultur daraus Die Perl Kultur ist von Offenheit Gastlichkeit und Hilfsbereitschaft aber auch von Individualismus Spieltrieb und Humor gepragt Anfangs war sicher Larry Wall hierfur ein Vorbild da er durch andere Projekte wie rn oder patch bereits bei der Veroffentlichung von Perl eine prominente Position in UNIX Entwicklerkreisen hatte doch mittlerweile zahlen auch Randal L Schwartz Damian Conway Audrey Tang Brian Ingerson und Adam Kennedy zu den Leitfiguren die durch ihre Arbeiten innerhalb der Szene grosse Beachtung finden Im Gegensatz zu kommerziellen Programmiersprachen lassen sich fast alle Aktivitaten auf personliche Motivationen zuruckfuhren Dementsprechend ist die Perl Foundation eine reine Freiwilligen Organisation die sich als Angelpunkt einer sich selbst verwaltenden Gemeinschaft versteht und die gespendeten Gelder fur einflussreiche Projekte und Personen Organisation von Entwicklerkonferenzen und den Betrieb der wichtigsten Perl betreffenden Webseiten verwendet Treffen Workshops und Konferenzen Bearbeiten Lokale Benutzergruppen die meist ein oder zweimal im Monat zu zwanglosen Treffen einladen bei denen auch Vortrage gehalten werden konnen nennen sich Perl Mongers und sind in uber 200 grosseren Stadten auf der ganzen Welt zu finden Grosser wesentlich straffer organisiert und meist landesbezogen sind die jahrlichen Workshops von denen der gut etablierte Deutsche Perl Workshop 16 der erste war Workshops wollen ambitionierte Entwickler in einem moglichst erschwinglichen Rahmen lokal zusammenfuhren Ein ahnliches Ziel haben die grosseren Yet Another Perl Conferences YAPC die fur die Regionen Nordamerika Brasilien Europa Asien Russland und Israel abgehalten werden Am grossten allerdings auch am teuersten ist die von O Reilly in den USA ausgerichtete The Perl Conference TPC die mittlerweile Teil der OSCON ist Seit etwa 2005 werden fur engagierte Beitragende auch Hackathons abgehalten Disziplinen Bearbeiten Viele Spracheigenschaften von Perl laden dazu ein Programmcode kreativ zu gestalten Dies hat zu verschiedenen intellektuellen teils humorvollen teils skurrilen Wettbewerben und Traditionen um die Programmiersprache Perl gefuhrt Golf Golf ist eine Sportart fur Programmierer bei der das kurzeste Programm in ASCII Zeichen das eine gestellte Aufgabe vollstandig erfullt gewinnt Da Perl viele teils trickreiche Kurzel und Abkurzungen gangiger Techniken kennt ist dies eine besonders populare Disziplin unter Perl Programmierern Poesie Da Perl viele Elemente der englischen Sprache beinhaltet gibt es regelrechte Wettbewerbe in welchen die besten Beispiele fur Perl Poesie pramiert werden Neben der freien Form die lediglich Perl zum Inhalt hat wird hier versucht Gedichte zu schreiben die vom Interpreter ohne Warnungen und Fehlermeldungen ausgefuhrt werden 17 Daneben gibt es auch noch einen Perl Haiku Wettbewerb der dieser japanischen Gedichtform gewidmet ist Obfuscation Sehr beruhmt und beruchtigt ist auch die Disziplin obfuscation Verschleierung fur die es auch einen jahrlichen Wettbewerb den Obfuscated Perl Contest gibt der am ehesten mit dem International Obfuscated C Code Contest vergleichbar ist den Larry Wall selbst zweimal gewann Hier wird danach gestrebt auf ungewohnliche und kreative Art und Weise die Funktion eines Programms zu verschleiern Dies ist in Perl besonders leicht da es fur fast alles Kurzel gibt die Sprache selbst sehr dynamisch ist und viele Dinge abhangig vom Kontext automatisch geschehen was auch oft als Perl Magie bezeichnet wird Ein Beispiel von Mark Jason Dominus das 2000 beim 5 Annual Obfuscated Perl Contest den zweiten Preis gewann dieses Programm gibt den Text Just another Perl Unix hacker aus P split URRUU c8R d split nrekcah xinU lreP rehtona tsuJ sub p p r p u p P P pipe r p u p p q 2 f fork map P P f ord p amp 6 p P ix P close keys p p p p p p map p P amp amp close p wait until map r amp amp lt gt p d q sleep rand 2 if S print nbsp Randal L SchwartzJAPH Eine Art Unterkategorie von obfuscation ist die von Randal L Schwartz offentlich begonnene Disziplin JAPH Das sind Signaturen die kleine Perl Programme enthalten welche meist nur den Namen des Autors oder eine Botschaft auf eine moglichst nicht nachvollziehbare Art ausgeben Die Buchstaben JAPH sind die Anfangsbuchstaben von Schwartz Signatur Just Another Perl Hacker Perligata Das Perl Modul Lingua Romana Perligata von Damian Conway ist wohl eines der skurrilsten Module schlechthin Es ermoglicht dem Benutzer Perl komplett in Latein zu schreiben Wie in der lateinischen Sprache ist die Satzstellung weitgehend irrelevant fur die Bedeutung eines Ausdrucks stattdessen werden die Bezuge zwischen einzelnen Wortern durch ihre Flexion hergestellt Von Variablen bis Referenzen und mehrdimensionalen Arrays ist alles in dieser neuen Sprachdefinition vorhanden Nahezu alle Sonderzeichen wurden aus der Sprache entfernt Variablen gleichen Namens aber unterschiedlicher Struktur Beispielsweise next und next werden dekliniert um die entsprechende Variable zu adressieren Etwas Beispielcode insertum stringo unum tum duo excerpemento da Entspricht substr string 1 2 insert clavis hashus nominamentum da Entspricht keys keys hash Aus ahnlichem Antrieb entstanden Sprach Module fur Klingonisch Borg oder Leetspeak Solche Module sind ein gutes Beispiel fur den Zeitaufwand den viele Leute Perl widmen Perl kann man in diesem Sinne durchaus als Hobby bezeichnen Acme Brian Ingerson legte mit seinem bekannten Modul namens Acme das unmittelbar nichts weiter tut als dem Benutzer zu bescheinigen sein Programm habe den Hochstgrad an Perfektion erreicht einen Grundstein fur eine CPAN Kategorie von Modulen die keinen produktiven Nutzen haben sogar oft bewusst kontraproduktiv sind oder eine Funktion vorgeben die unmoglich so erreicht werden kann und eher als Witz zu verstehen ist Dieses Spiel mit skurrilen Ideen umfasst beeindruckende ASCII Art Module die den Quellcode unsichtbar machen Acme Bleach oder sonstig humorvoll manipulieren indem sie ihn zum Beispiel mit typischen Sprachfehlern des Prasidenten Bush versehen oder Methoden zufallig loschen was die Anwesenheit einer diebischen Elster simulieren soll Mottos und Zitate Bearbeiten nbsp Perl Programmierer sehen Kamele jeder Art als Maskottchen Die London Perl Mongers haben sogar eines aus dem Londoner Zoo adoptiert Es gibt viele bekannte Mottos und Zitate die sich mit Perl selbst oder den Moglichkeiten der Sprache beschaftigen hier einige Kostproben Perl the Swiss Army Chainsaw of Programming Languages Perl Die Schweizer Armee Kettensage der Programmiersprachen Anspielung auf die Vielseitigkeit von Schweizer Taschenmessern Perl is the only language that looks the same before and after RSA encryption Keith Bostic Perl ist die einzige Sprache die vor und nach einer RSA Verschlusselung gleich aussieht Only perl can parse Perl Larry Wall Nur perl kann Perl parsen we often joke that a camel is a horse designed by a committee but if you think about it the camel is pretty well adapted for life in the desert The camel has evolved to be relatively self sufficient On the other hand the camel has not evolved to smell good Neither has Perl Larry Wall uber das Kamel als Perl Maskottchen wir witzeln oft dass ein Kamel ein Pferd ist das von einem Komitee entworfen wurde Aber wenn man daruber nachdenkt ist das Kamel ziemlich gut an das Leben in der Wuste angepasst Das Kamel hat sich dahin entwickelt autark zu sein Andererseits hat es sich nicht dazu entwickelt gut zu riechen Perl auch nicht The very fact that it s possible to write messy programs in Perl is also what makes it possible to write programs that are cleaner in Perl than they could ever be in a language that attempts to enforce cleanliness Larry Wall Linux World 1999 Genau die Tatsache dass es moglich ist unsaubere Programme in Perl zu schreiben ermoglicht es Programme zu schreiben die sauberer sind als in Sprachen die versuchen Sauberkeit zu erzwingen Perl Write once never understand again Perl Einmal schreiben nie wieder verstehen Eine Anspielung auf das Mantra Write once run everywhere von Java Auszeichnungen BearbeitenWettbewerbe Im Jahr 2004 erreichte Perl beim 7 Wettbewerb des International Conference on Functional Programming Contest eine Platzierung in der Lightning Division und gewann 2007 den zweiten Platz Literatur BearbeitenTom Christiansen brian d foy Larry Wall Programming Perl 4 Auflage O Reilly Sebastopol CA 2012 ISBN 978 0 596 00492 7 Randal L Schwartz brian d foy Tom Phoenix Learning Perl 7 Auflage O Reilly Sebastopol CA 2017 ISBN 978 1 4919 5432 4 Randal L Schwartz brian d foy Tom Phoenix Intermediate Perl 2 Auflage O Reilly Sebastopol CA 2012 ISBN 978 1 4493 9309 0 brian d foy Mastering Perl 2 Auflage O Reilly Sebastopol CA 2014 ISBN 978 1 4493 9311 3 Joseph N Hall brian d foy Joshua A McAdams Effective Perl Programming 2 Auflage Addison Wesley Boston MA 2010 ISBN 978 0 321 49694 2 chromatic Modern Perl Onyx Neon Press 2011 ISBN 0 9779201 7 8 aktuellere Referenz als E Book frei erhaltlich Damian Conway Perl Best Practices O Reilly Sebastopol CA 2005 ISBN 978 0 596 00173 5 Damian Conway Object Oriented Perl Manning Publications Greenwich CT 2000 ISBN 1 884777 79 1 Peteris Krumins Perl One liners No Starch Press San Francisco CA 2014 ISBN 978 1 59327 520 4 Johan Vromans Perl Pocket Reference 5 Auflage O Reilly Sebastopol CA 2011 ISBN 978 1 4493 0370 9 Jon Orwant Hrsg Games Diversions amp Perl Culture O Reilly Sebastopol CA 2010 ISBN 978 0 596 00312 8 Jurgen Schroter Grundwissen Perl Oldenbourg 2007 ISBN 978 3 486 58074 7 Mark Jason Dominus Higher Order Perl Morgan Kaufmann 2005 ISBN 1 55860 701 3 Funktionale Programmierung in Perl Weblinks Bearbeiten nbsp Wikibooks Perl Programmierung Lern und Lehrmaterialien nbsp Commons Perl Programmiersprache Sammlung von Bildern Videos und Audiodateien perl org Offizielle sehr umfangreiche Website von Perl allgemeine Informationen englisch perl com englisch PerlMonks Community englisch Perldoc Browser englisch Linkkatalog zum Thema Perl bei curlie org ehemals DMOZ deutsch Deutsches Perl Tutorial fur Einsteiger Deutsches Perl Tutorial fur Einsteiger und FortgeschritteneEinzelnachweise Bearbeiten Ricardo Signes perl v5 38 0 is now available 2 Juli 2023 abgerufen am 3 Juli 2023 Larry Wall Programming is Hard Let s Go Scripting auf perl com vom 6 Dezember 2007 abgerufen am 1 Juni 2019 Larry Wall Perl the first postmodern computer language abgerufen am 31 Dezember 2018 What is Raku Perl 6 im Perlfaq manpage von Perl 1 0 in der Perl Timeline auf perl org englisch Kate Johanns Tech Time Warp Why Perl the duct tape of the internet was such a gem SmarterMSP 20 Dezember 2019 abgerufen am 15 November 2020 Der erste Teil der offiziellen Perl FAQ englisch Tabelle aller Erscheinungsdaten von Perl POD Dokument englisch in der offiziellen CPAN Distribution TMTOWTDI im englischsprachigen Wiktionary Getopt Long auf CPAN Liste der bekannten Ports auf CPAN Modul Inline auf CPAN GNU Octave auf gnu org Why Modern Perl Teaches OO with Moose chromatic Susanne Schmidt Happy Birthday Perl Eine Skriptsprache feiert 30 Geburtstag In iX Nr 12 18 Dezember 2017 S 108 heise de abgerufen am 22 September 2023 22nd German Perl Raku Workshop 2020 in Erlangen zum Beispiel Perl Poetry Kategorie perlmonks org englisch nbsp Dieser Artikel wurde am 26 August 2005 in dieser Version in die Liste der lesenswerten Artikel aufgenommen Normdaten Sachbegriff GND 4307836 9 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Perl Programmiersprache amp oldid 237730707