Deutsche PerlFAQ

NAME

perlfaq1 - Allgemeine Fragen zu Perl


Beschreibung

Dieser Abschnitt der FAQ beantwortet sehr allgemeine, high-level Fragen über Perl.

Was ist Perl?

Perl ist eine Hochsprache der Programmierung mit einer aus verschiedenen Quellen schöpfenden Herkunft, die von Larry Wall und einem Ensemble von tausenden anderen geschrieben wurde. Sie wurde der allgegenwärtigen C-Programmiersprache hergeleitet und in einem geringeren Außmaß auch von sed, awk, der Unix shell und mindestens einem Dutzend andere Tools und Sprachen. Perls Prozess-, Datei-, und Textmanipulationsfähigkeiten machen es besonders gut geeignet für Aufgaben mit schnellem Prototypen, Systemtools, Softwaretools, Systembetreuungsaufgaben, Datatenbankzugriff, graphischem Programmieren, Netzwerk, und World-Wide-Web-Programmierung. Diese Stärken haben es besonders bei Systembetreuern, CGI-Skript-Autoren beliebt gemacht, doch auch Mathematiker, Genforscher, Journalisten und sogar Manager verwenden Perl. Vielleicht solltest auch du es tun.

Wer unterstützt Perl? Wer entwickelt es? Warum ist es kostenlos?

Die ursprüngliche Kultur des Internets, bevor es populär wurde, und die tiefe Gläubigkeit des Perl-Autors, Larry Wall, haben zur freien und offenen Verteilungsmethode von Perl geführt. Perl wird von seinen Anwendern unterstützt. Der Core (Kern), die Standard-Perl-Bibliothek, die optionalen Module und die Dokumentation, die Du gerade liest wurden alle von Freiwilligen geschrieben. Siehe die persönliche Mitteilung am Ende der Datei ``README'' in der Perl Source Distribution zu weiteren Einzelheiten. Siehe auch perlhist (neu ab 5.005) zu Perls Meilenstein-Versionen.

Speziell das Entwickler-Team des Cores (auch bekannt als Perl Porters) ist eine buntgemischte Gruppe von selbstlosen Individuen, die sich dafür einsetzen, eine bessere, kostenlose Software zu schreiben, als Du es hoffen kannst, für Geld zu kaufen. Vielleicht möchtest Du die laufende Entwicklung über die Archive unter http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ und http://archive.develooper.com/perl5-porters@perl.org/ oder über das Newsgateway nntp://nntp.perl.org/perl.perl5.porters oder dessen Webinterface unter http://nntp.perl.org/group/perl.perl5.porters verfolgen, oder die FAQ unter http://dev.perl.org/perl5/docs/p5p-faq.html lesen. Du kannst Dich auch auf der Mailinliste einschreiben, indem Du eine Anfrage an perl5-porters-request@perl.org schickst (eine leere Nachricht ohne Betreff ist ausreichend).

Obwohl das GNU Projekt Perl beinhaltet, gibt es nicht so etwas wie ``GNU Perl''. Perl wird von der Free Software Foundation weder geschrieben noch gepflegt. Perls Lizenzbedingungen sind auch freier als es GNU Software normalerweise ist.

Auf Wunsch kannst Du kommerzielle Unterstützung für Perl bekommen, aber für die meisten Anwender wird der informelle Support mehr als ausreichend sein. Für weitere Informationen siehe auch die Antwort auf die Frage ``Wo kann ich eine kommerzielle Version von Perl kaufen?''.

Welche Version von Perl soll ich benutzen?

(beigetragen von brian d foy)

Oft ist es eine Sache der eigenen Meinung und des Geschmacks und es gibt keine Anwort, die für jeden passt. Im Allgemeinen solltest Du entweder die akutelle stabile Version verwenden oder die stabile Version, die es unmittelbar vor der aktuellen Version gab. Aktuell sind dies perl5.10.x und perl5.8.x.

Weiterhin musst Du weitere Dinge beachten und entscheiden, was für Dich das Beste ist.

  • Wenn die Dinge nicht kaputt sind, kann ein Perl-Upgrade sie kaputt machen (oder zumindest neue Warnungen erzeugen).

  • Die aktuellsten Versionen von perl haben mehr Bugfixes.

  • Die Perl Community ist darauf eingestellt, die letzten Versionen zu unterstützen, also wirst Du es leichter haben, Hilfe für diese zu bekommen.

  • Versionen vor perl5.004 haben schwerwiegende Sicherheitsprobleme mit ``buffer overflows'' und einige Fälle haben CERT Hinweise (z.B. http://www.cert.org/advisories/CA-1997-17.html ).

  • Die aktuellsten Versionen sind wahrscheinlich die am wenigsten eingesetzten und getestetn, so dass Du vielleicht ein paar Monate nach ihrer Veröffentlichung abwarten willst wenn Du Risikoscheu bist und sehen willst, welche Probleme andere haben.

  • Die unmittelbar vorhergehenden Versionen (z.B. perl5.8.x) sind für gewöhnlich seit einer ganzen Weile gepflegt, auch wenn nicht auf dem gleichen Level wie die aktuelle Version.

  • Niemand unterstützt aktiv Perl 4. Vor fünf Jahren war es ein toter Kamelkadaver (diesem Dokument zufolge). Jetzt es kaum noch ein Skelett, weil seine getünchten Knochen gebrochen und angefressen sind.

  • Es steht kein Perl 6 Release an, aber es wird da sein, wenn es fertig ist. Bleib dran, aber kümmere Dich nicht darum, dass Du einen Versionsprung von Perl machen musst. Keiner wird Dir Perl 5 wegnehmen.

  • Es gibt wirklich zwei Gleise bei der perl Entwicklung: Eine gepflegte Version und eine experimentelle Version. Die gepflegte Version ist stabil und hat eine gerade Neben-Versionsnummer (z.B. perl5.10.x, bei der die 10 die Neben-Versionsnummer ist). Die experimentelle Version kann Features enthalten, die es nicht bis in die stabile Version schaffen. Sie haben eine ungerade Neben-Versionsnummer (z.B. perl5.9.x, wobei die 9 die Neben-Versionsnummer ist).


=head2 Was sind Perl 4, Perl 5 und Perl 6?

(beigetragen von brian d foy)

Kurz, Perl 4 ist die Vergangenheit, Perl 5 die Gegenwart und Perl 6 ist die Zukunft.

Die Zahl nach perl (z.B. die 5 bei Perl 5) ist sowohl die Hauptversionsnummer des Perl interpreters als auch die Version der Sprache. Jede Hauptversion hat signifikante Unterschiede durch die frühere Versionen nicht unterstützt werden können.

Die aktuelle Hauptversion von Perl ist Perl 5 und wurde 1994 veröffentlicht. Es kann Skripte von der früheren Version - Perl 4 (März 1991) - laufen lassen, aber sie hat starke Unterschiede. Sie hat das Konzept der Referenzen, komplexe Datenstrukturen und Module eingeführt. Für den Perl 5 Interpreter wurden die früheren Perl-Sourcen komplett neu geschrieben.

Perl 6 ist die nächste Hauptversion von Perl, aber das ist noch in Entwicklung, sowohl bei der Syntax als auch im Design. Die Arbeit startete im Jahr 2002 und läuft immer noch. Viele der interessantesten Features tauchen auch in der aktuellsten Version von Perl 5 auf und einige Perl 5 Module ermöglichen es Dir, einiges der Perl 6 Syntax in Deinen Programmen zu verwenden. Du kannst mehr über Perl 6 unter http://dev.perl.org/perl6/ lernen.

Für eine Historie der Perl Revisionen, siehe perlhist.

Was war Ponie?

(beigetragen von brian d foy)

Ponie steht für ``Perl On the New Internal Engine'' und wurd von Arthur Bergmann von Fotango im Jahre 2003 begonnen. Und es lief später als ein Projekt der Perl Foundation. Es wurde 2006 abgebrochen ( http://www.nntp.perl.org/group/perl.ponie.dev/487 ).

Anstatt die aktuellen Perl-Interna zu nutzen, zielte Ponie darauf ab, neue Interna zu schaffen, die einen Weg für die Übersetzung von Perl 5 nach Perl 6 (oder irgendetwas anderes, das Parrot unterstützt) bieten. Du wärst in der Lage gewesen, Perl 5 einfach mit Parrot, der Virtuellen Maschine die Perl 6 Bytecode kompilieren und laufen lassen kann, zu benutzen.

Was ist Perl 6?

Auf der zweiten O'Reilly Open Source Software Convention hat Larry Wall angekündigt, dass die Perl 6 Entwicklung ernsthaft anfangen würde. Perl 6 war ein oft benutzter Ausdruck für Chip Salzenbergs Projekt, Perl unter dem Namen Topaz in C++ neu zu schreiben. Wie auch immer, Topaz bot wertvolle Einblicke in die nächste Version von Perl und deren Implementierung. Aber das Projekt wurde letztendlich abgebrochen.

Wenn du mehr über Perl6 lernen, oder am Kreuzzug, der Perl verbessern soll, teilnehmen willst, dann lies die Perl6-Entwicklerseiten auf http://dev.perl.org/perl6/ und mach mit.

Perl6 ist noch nicht zur Veröffentlichung angekündigt und Perl5 wird noch eine Weile nach seiner Veröffentlichung unterstützt werden. Warte mit dem, was du zu tun hast nicht auf Perl6.

``Wir nehmen es sehr ernst mit dem Neuerfinden von all dem, das neuerfunden werden muss.'' --Larry Wall

Wie stabil Perl?

Produktionsversionen, die Bugfixe und neue Funktionalität beinhalten, werden vor ihrer Veröffentlichung ausgiebig getestet. Seit der Version 5.000 haben wir es im Durchschnitt nur auf eine neue Produktionsversion im Jahr gebracht.

Larry und das Perlentwicklerteam ändern gelegentlich etwas am internen Kern der Sprache; jedoch werden alle möglichen Anstrengungen unternommen, Rückwärtskompatibilität zu gewährleisten. Obwohl längst nicht alle Perl 4-Skripte problemlos unter Perl 5 laufen, sollte ein Perl-Update niemals ein Programm unbrauchbar machen, das für eine frühere Perlversion geschrieben wurde (mal von zufälligen Bugfixes und seltenen neuen Schlüsselworten abgesehen).

Ist Perl schwierig zu (er)lernen?

Nein, es ist leicht, mit dem Perl-Lernen anzufangen, und es ist auch leicht, mit dem Perl-Lernen weiterzumachen. Perl sieht aus wie die meisten Programmiersprachen, mit denen Du vermutlich schon Erfahrungen gemacht haben wirst; solltest Du also bereits ein C-Programm, ein awk-Skript, ein Shellskript, oder auch ein BASIC-Programm geschrieben haben, dann bist Du schon auf dem halben Weg dahin.

Die meisten Aufgaben verlangen nur einen kleineren Teil der Sprache Perl. Eines der führenden Mottos für die Perl-Entwicklung ist ``there's more than one way to do it'' (TMTOWTDI, manchmal ``Tim Toady'' ausgesprochen: ``Es gibt mehr als nur einen Weg, es zu tun''). Die Lernkurve von Perl ist daher sehr flach (leicht erlernbar) und lang (es gibt sehr viel, das Du tun kannst, wenn Du es wirklich willst).

Schließlich, aus dem Grund, dass Perl meistens (aber nicht immer, und auf jeden Fall nicht per Definition) eine interpretierte Sprache ist, kannst Du Programme schreiben und testen, ohne dazwischen einen Kompilierschritt zu durchlaufen, was sehr schnelles und leichtes Ausprobieren und Testen/Debuggen ermöglicht. Diese Leichtigkeit etwas auszuprobieren verflacht die Lernkurve noch weiter.

Was Perl noch leichter zu lernen macht sind: Unixerfahrung, fast jede Art der Programmiererfahrung, Verständnis von regulären Ausdrücken und die Fähigkeit, anderer Leute Code zu verstehen. Wenn Du etwas tun musst, wurde es vermutlich schon getan, und ein funktionierendes Beispiel ist meistens kostenlos erhältlich. Vergiss auch nicht die Perl Module. Diese werden im Teil 3 dieser FAQ besprochen, zusammen mit CPAN, das im Teil 2 dieser FAQ besprochen wird.

Wie ist Perl im Vergleich zu anderen Sprachen wie Java, Python, REXX, Scheme oder Tcl?

In manchen Bereichen vorteilhaft, in anderen weniger. In welche Bereichen Perl gut oder schlecht abschneidet ist oft eine persönliche Wahl, diese Frage im Usenet zu stellen bedeutet das Risiko einen unproduktiven heiligen Krieg zu beginnen.

Vermutlich ist es das beste, gleichwertigen Code für eine Anzahl an Aufgaben zu schreiben. Diese Sprachen haben ihre eigenen Newsgroups in denen man über sie lernen kann (aber besser keine Meinungen über sie diskutieren sollte).

Einige vergleichende Dokumente sind auf http://www.perl.com/doc/FMTWYEWTK/versus/ zu finden, falls Du es gar nicht lassen kannst.

Kann ich [Aufgabe] in Perl erledigen?


Perl ist flexibel und erweiterbar genug, dass Du es für so ziemlich jede Aufgabe verwenden kannst, 
von einzeiligen Dateibearbeitungsaufgaben hin zu großen ausgefeilten Systemen. Für viele Leute dient 
Perl als guter Ersatz für Shellskripte. Für Andere ist es ein angenehmer high-level-Ersatz für die 
meisten Dinge, die sonst in low-level-Sprachen wie C oder C++ geschrieben werden müssten. Es liegt 
am Ende bei Dir (und möglicherweise Deinem Management), welche Aufgaben in Perl gemacht werden und 
welche nicht.

Sollten Sie eine Bibliothek haben, die eine API anbietet, kannst Du jede Komponente davon als ganz normale Perl-Funktion oder Variable zugänglich machen, indem Du eine Perl-Erweiterung in C oder C++ verwendest, die dynamisch in den Perl-Interpreter gelinkt wird. Du kannst auch den anderen Weg gehen und Dein Hauptprogramm in C oder C++ schreiben und dann auf die Schnelle Perl Code hineinlinken, um so eine mächtige Anwendung zu schaffen. Siehe perlembed.

Nichtsdestoweniger; es wird immer kleine konzentrierte Spezialaufgaben-Sprachen geben, die sich einem abgesteckten Aufgabenbereich widmen, die für ihr Aufgabengebiet auch am besten geeignet sind. Perl versucht, alle diese Dinge für alle Leute anzubieten, aber nicht etwas ganz besonderes für irgendwen. Beispiele für spezialisierte Sprachen, die einem einfallen sind unter anderem prolog und matlab.

Wann sollte ich nicht in Perl programmieren?

Wenn Dein Chef es verbietet -- aber denke darüber nach ihn auszuwechseln :-).

Ein wirklich guter Grund ist, wenn man bereits eine existierende Applikation hat, die in einer anderen Sprache geschrieben wurde (und das sehr gut), oder wenn eine für die Aufgabe spezialisierte Anwendungssprache zur Verfügung steht (z.Bsp. prolog, make).

Aus verschiedenen Gründen ist Perl für Embedded Real-Time-Systeme, low-level-Betriebssystementwicklung wie Gerätetreiber oder Kontextwechselnden Code, komplexe multithreadende Shared-Memory-Anwendungen oder extrem große Anwendungen vermutlich nicht so gut geeignet. Dir wird aufgefallen sein, dass perl selbst ist nicht in Perl geschrieben worden.

Perl bleibt grundsätzlich eine dynamisch typisierte Sprach, und keine statisch typisierte. Man wird Dich nicht bestrafen, wenn Du Perl nicht soweit vertrauen möchtest, Software für Kernkraftwerke oder Gehirnchirurgieüberwachung darin zu schreiben. Und Larry wird auch leichter schlafen können -- trotz Wall-Street-Börsenprogrammen in Perl. :-)

Was ist der Unterschied zwischen ``perl'' und ``Perl''?

Ein Bit. Oha, es ging gar nicht um ASCII? :-) Larry verwendet nun ``Perl'' um damit die Sprache selbst zu bezeichen und ``perl'' für ihre Implementation, also den aktuellen Interpreter. Daher kommt Tom's Ausspruch ``Nur perl kann Perl parsen.''

Before the first edition of Programming perl, people commonly referred to the language as ``perl'', and its name appeared that way in the title because it referred to the interpreter. In the book, Randal Schwartz capitalised the language's name to make it stand out better when typeset. This convention was adopted by the community, and the second edition became Programming Perl, using the capitalized version of the name to refer to the language.

Du kannst es genau so halten oder anders. Zum Beispiel sieht sowohl ``awk und perl'' als auch ``Python and Perl'' ganz ok aus, während ``awk und Perl'' und ``Python und perl'' nicht so gut aussieht. Schreibe jedoch niemals ``PERL'', denn Perl ist kein Akronym, egal was apokryphe Folklore und spätere Erklärungen dazu sagen.

Ist es ein Perl-Programm oder ein Perl-Skript?

Larry ist das ganz gleich. Er sagt (halb scherzend) ``Ein Skript gibt man den Schauspielern. Ein Programm gibt man den Zuschauern.''

Ursprünglich war ein Skript eine zusammengestellte Sequenz von eigentlich interaktiven Kommandos--also ein Chatskript. Soetwas wie ein UUCP oder PPP Chatskript oder ein Expect-Skript würde es gut beschreiben, ebenso Konfigurationsskripte, die von Programmen beim Start ausgeführt werden, wie etwa .cshrc oder .ircrc . Chatskripte waren nur die Treiber für existierende Programme, nicht für sich funktionierende Programme an sich.

Informatiker würden richtigerweise erklären, das alle Programme interpretiert werden, die einzige Frage dabei ist auf welchem Level. Aber wenn man jemanden fragt, der kein Informatiker ist, könnte dieser antworten, dass ein Programm einmal in echte Maschinensprache kompiliert dann mehrfach ausgeführt werden kann, ein Skript hingegen jedesmal erneut übersetzt werden muss, wenn es verwendet wird.

Heute, wo ``Skript'' und ``skripten'' Begriffe geworden sind, die von skrupellosen und unwissenden Marketingleuten für ihre eigenen ruchlosen Absichten verwendet werden, haben sie merkwürdige und belastete Bedeutungen bekommen, wie etwa ``nicht ernstzunehmen'' oder ``nicht echtes Programmieren''. Als Konsequenz bevorzugen es einige Perl-Programmierer die Begriffe zu vermeiden.

Was ist ein JAPH?

(beigetragen von brian d foy)

JAPH steht für ``Just another Perl hacker,'', das Randal Schwartz in den späten 1980er zum Unterschreiben seiner Emails und Usenet-Nachrichten benutzt hat. Vorher hat er diesen Ausdruck mit vielen Dingen verwendet (``Just another x hacker,''). Zur Trennung seiner JAPH, begann er diese als Perl-Programm zu schreiben:

        print "Just another Perl hacker,";

Andere Leute haben das aufgenommen und begannen clevere oder verwirrende Programme zu schreiben, die das gleiche ausgegeben haben. Die Dinge gerieten schnell außer Kontrolle, während sie ihren Schöpfern und Lesern noch Stunden der Vergnügung beschehrten.

Auf CPAN gibt es verschiedene JAPH Programme unter http://www.cpan.org/misc/japh .

Wo kann ich eine Liste von Larry Walls Witzeleien finden?

(beigetragen von brian d foy)

Google ``larry wall quotes''! Du könntest sogar den ``Auf gut Glück!''-Button versuchen. :)

Wikiquote hat die Witze von Larry Wall mit deren Quellen, einschließlich seiner Usenet-Beiträge und Quellcode-Kommentare.

Wenn Du eine einfache Textdatei haben möchtest, versuche es mit http://www.cpan.org/misc/lwall-quotes.txt.gz .

Wie kann ich andere überreden, Perl zu benutzen?

(beigetragen von brian d foy)

Appelliere an ihren Eigennutz. Perl ist für sie neu (und daher gruselig); finde etwas, das Perl tun kann um eines ihrer Probleme zu lösen. Das könnte bedeuten, dass Perl ihnen etwas spart (Zeit, Kopfschmerzen, Geld) oder ihnen etwas gibt (Flexibilität, Stärke, Testbarkeit).

Im Allgemeinen ist der Nutzen einer Sprache sehr eng mit den Fähigkeiten der Personen verbunden, die die Sprache einsetzen. Wenn Du oder Dein Team durch Perl schneller, besser und stärker wird, kannst Du mehr Nutzen bringen. Denk daran, dass Leute häufig besser auf das was sie daraus herausziehen reagieren. Wenn Du auf Widerstand triffst, finde heraus, was diese Leute aus ihrer anderen Wahl herausziehen und wie Perl diesen Ansprüche erfüllen kann.

Du musst Dich nicht darum kümmern, wo Du Perl herbekommst, oder dass Du dafür bezahlen musst; Es ist frei verfügbar und etliche beliebte Betriebssystem bringen Perl schon mit. Unterstützung durch die Gemeinschaft an Plätzen wie Perlmonks ( http://www.perlmonks.com ) und die verschiedenen Perl-Mailinglisten ( http://lists.perl.org ) bedeuten, dass Du üblicherweise schnell Antworten auf Deine Probleme bekommst.

Und schließlich denke daran, dass Perl nicht das richtige Werkzeuge für jeden Job ist. Du bist ein viel besserer Fürsprecher wenn Deine Ansprüche begründet sind und auf der Realität basieren. Etwas dogmatisch zu verfechten, bringt die Leute dazu, Deine Botschaft zu ignorieren. Sei ehrlich bei möglichen Nachteilen von Perl als Deine Alternative, da jede Alternative Kompromisse bedeutet.

Vielleicht findest Du diese Links hilfreich:


REVISION

Revision: $Revision$

Datum: $Date$

Für Details über Versionskontrolle und Verfügbarkeit siehe perlfaq.


AUTOR UND COPYRIGHT

Copyright (c) 1997-2009 Tom Christiansen, Nathan Torkington und andere Autoren wie genannt. Alle Rechte vorbehalten.

Diese Dokument ist frei; Du kannst es unter den gleichen Bedingungen wie Perl selbst weiterverteilen und/oder verändern.

Unabhängig von der Verteilung, sind alle Code-Beispiele Gemeingut. Dir wird erlaubt und du wirst ermutigt, sie und beliebige davon abgeleitete in deinen Programmen zum Spaß oder für Profit zu verwenden. Ein einfacher Kommentar im Code, der die FAQ würdigt, wäre nett, ist aber nicht erforderlich.

Übersetzung von Sören Sörries und Renée Bäcker