Perl Mongers :: deutschsprachig - German.pm

A wiki for German-speaking Perl programming language user groups.

Änderungen, Hilfe

Treffen, Veranstaltungen

Leute, Gruppen, Ziele

PerlLernen

Best of Perl Books
Die Besten Bücher

ErfolgsStories

Links, FAQ, Forum

Mailing List

Impressum


Liebe(r) Perl Monger(in),

diese Site ist bereits seit langem ein Ziel von Spamrobotern. Neu ist, dass ich das Aufräumen leid bin. Darum schreibe mir eine Mail mit Deinem Usernamen und einem Crypt Passwort, damit Du einen passwortgeschtzten Zugang zu dieser Site von mir erhältst. Eines baldigen Tages wirst Du den brauchen, um hier weiterhin Seiten verändern zu können.

Vielen Dank, Sören


Amazon-Angebote... (Einkauf über diesen Link sponsort den Unterhalt von perlmongers.de)
  1. NAME
  2. BESCHREIBUNG
    1. Was ist Perl
    2. Wer unterstützt Perl Wer entwickelt es Warum kostet es nichts
    3. Welche Perlversion sollte ich verwenden
    4. Was sind Perl4 und Perl5
    5. Was ist Ponie
    6. Was ist Perl6
    7. Wie stabil ist Perl
    8. Ist es schwierig, Perl zu erlernen
    9. Wie läßt sich Perl mit anderen Sprachen wie Java, Python, REXX, Scheme, oder Tcl vergleichen
    10. Kann ich Aufgabe in Perl bewältigen
    11. Wann sollte ich ich nicht in Perl programmieren
    12. Was ist der Unterschied zwischen "perl" und "Perl"
    13. Ist es ein Perl-Programm oder ein Perl-Skript
    14. Was ist ein JAPH
    15. Wo erhalte ich eine Liste mit Witzen von Larry Wall
    16. Wie kann ich meinen Sysadmin/Chef/Mitarbeiter davon überzeugen, Perl (-version 5/5.8.6) anstelle einer anderen Programmiersprache zu verwenden
  3. AUTOR UND COPYRIGHT
  4. Übersetzer
  5. Hinweise

NAME

perlfaq1 - Allgemeine Fragen zu Perl

BESCHREIBUNG

Dieser Abschnitt der FAQ beantwortet sehr allgemeine niveauvolle Fragen über Perl.

Was ist Perl?

Perl ist eine höhere Programmiersprache mit einer aus verschiedenen Quellen schöpfenden Herkunft, die von Larry Wall und einer Gruppe von Tausenden geschrieben wurde. Es stammt von der allgegenwärtig Programmiersprache C ab, und etwas weniger auch noch von sed, awk, der Unix Shell, und noch mindestens einem weiteren Dutzend von anderen 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 kostet es nichts?

Die ursprüngliche Kultur des Internets vor seiner Entdeckung durch die alten Medien und der tiefe Glaube 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 wurde 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 zu Perls milestone releases (Meilenstein-Versionen).

Insbesodere das Core Development Team (Team der Kern-Entwicker, bekannt als die Perl Porters) sind eine are a bunt gemischte Gruppe selbstloser Einzelner, die es sich fest vorgenommen haben bessere freie Software zu schaffen, als man je erhoffen dürfte, für Geld kaufen zu können. Die laufende Entwicklung kann man sich anhand der Archive auf 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 seine Webschnittstelle http://nntp.perl.org/group/perl.perl5.porters anschaun, oder die FAQ bei http://simon-cozens.org/writings/p5p-faq lesen, oder die Mailingliste bestellen, indem man an perl5-porters-request@perl.org schreibt (eine leere Nachricht ohne Betreff reicht schon aus).

Obwohl das GNU Projekt Perl mit ausliefert gibt es doch kein "GNU Perl". Perl wird von derFree Software Foundation weder hergestellt noch unterstützt. Perls Lizensbedingungen sind noch dazu freier als die von GNU Software es für gewöhnlich sind.

Kommerzielle Unterstützung für Perl ist erhältlich, wenn sie gewünscht wird, jedoch wird die informelle Unterstützung den meisten Anwendern reichen. Siehe die Antwort auf "Wo kann ich eine kommerzielle Version von Perl kaufen?" für weitere Informationen.

Welche Perlversion sollte ich verwenden?

Man sollte unbedingt Version 5 verwenden. Version 4 ist alt, eingeschränkt, und wird nicht länger unterstützt; ihr letzter Patch (4.036) war 1992, das ist lange her. Selbstverständlich ist es stabil, wie alles tote; Perl4 wurde schon als totes flohgebissenes Kamelaas bezeichnet. Die aktuellste Produktionsversion ist 5.8.5 (obwohl auch 5.005_03 und 5.6.2 weiter unterstützt werden). The most cutting-edge development release is 5.9. Weitere Hinweise auf die Sprache Perl in diesem Dokument beziehen sich auf die aktuelle Produktionsversion, wenn es nicht anders dargestellt wird. Wenn du dieses Dokument liest, kann schon die eine oder andere offizielle Fehlerkorrekturversion erschienen sein, vielleicht auch schon die eine oder andere experimentelle Version auf dem Weg zur nächsten Produktionsversion sein. All Versionen vor 5.004 hatten einen Speicherüberlaufsfeher, der eine große Sicherheitsgefahr darstellt.

Was sind Perl4 und Perl5?

Perl4 und Perl5 sind informelle Namen für verschiedene Versionen der Programmiersprache Perl. "Perl5" läßt sich leiter aussprechen als die "Perlversion 5(.004)", jedoch haben manche es so verstanden, als gäbe es eine Programmiersprache namens "Perl5", was so nicht stimmt. Perl5 ist lediglich der beliebte Name für die 5. Hauptversion (Oktober 1994), während Perl4 die vierte Hauptversion (März 1991) ist. Es gab auch ein Perl1 (im Januar 1988), ein Perl2 (Juni 1988), und ein Perl3 (Oktober 1989).

Die Version 5.0 ist im Kern eine vollständig neu geschriebene Form des original-Perl-Quellcodes der Versionen 1 bis 4. Es wurde modularisiert, objekt-orientiert, verändert, gestutzt und optimiert, bis es fast schon nicht mehr nach dem alten Quellcode aussah. Jedoch ist das Interface kaum verändert erhalten geblieben und die kompatibilität zu alten Version ist sehr hoch. Siehe perltrap/"Perl4 to Perl5 Traps".

Um die "Was für eine Sprache ist Perl5?"-Verwirrung zu vermeiden, verwenden manche Leute einfach "Perl" um die aktuelle Perlversion damit zu bezeichnen und vermeiden den Begriff "Perl5" gänzlich. Es ist aber auch gar nicht so wichtig.

Siehe perlhist für die Geschichte der Perlversionen.

Was ist Ponie?

Auf der O'Reilly Open Source Software Convention 2003, kündigten Artur Bergman, Fotango, und The Perl Foundation ein Projekt namens Ponie an, das Perl5 auf der Parrot virtual machine laufen lassne sollte. Ponie steht für Perl On New Internal Engine (Perl auf neuer interner Maschine). Die implementation 5.10 der Sprache Perl wird für Ponie verwendet und es soll keine Unterschiede in der Sprache zwischen Perl5 und Ponie geben. Ponie ist kein vollständiges Neuschreiben von Perl5.

Für weitere Einzelheiten, siehe http://www.poniecode.org/

Was ist Perl6?

Auf der zweiten O'Reilly Open Source Software Convention hat Larry Wall angekündigt, daß ernsthaft mit der Entwicklung von Perl6 begonnen würde. Perl6 war ein oft verwendeter Begriff für das Projekt Topaz von Chip Salzenberg, Perl in C++ neu zu schreiben. Topaz hingegen lieferte keine wertvollen Erkenntnisse für die nächste Version von Perl und seine Implementierung und wurde 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 muß." --Larry Wall

Wie stabil ist Perl?

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

Larry und das Perlentwicklerteam ändern hin und wieder 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 perl4-Skripte problemlos in perl5 laufen, sollte ein Perl-Update niemals ein Programm unbrauchbar machen, daß für eine frühere Perlversion geschrieben wurde (mal von zufälligen Bugfixen und seltenen neuen Schlüsselworten abgesehen).

Ist es schwierig, Perl zu erlernen?

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 Sie vermutlich schon Erfahrungen gemacht haben werden; sollten Sie also bereits ein C-Programm, ein awk-Skript, ein Shellskript, oder auch ein BASIC-Programm geschrieben haben, dann sind sie schon auf dem 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 wayto 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 Sie tun könnten, wenn sie es wirklich wollten).

Schließlich, aus dem Grund, daß Perl meistens (aber nicht immer, und auf jeden Fall nicht definitionsgemäß) eine interpretierte Sprache ist, können Sie Programme schreiben und testen, ohne dazwischen einen Kompilierschritt zu durchlaufen, was sehr schnelles und leichtes Ausprobieren und Testen/Debuggen ermöglicht. Diese Leichtigkeit 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 Sie etwas tun müssen, wurde es vermutlich schon getan, und ein funktionierendes Beispiel ist meistens kostenlos erhältlich. Vergessen Sie auch nicht die neuen Perl Module. Diese werden im Teil 3 dieser FAQ besprochen, zusammen mit CPAN, der im Teil 2 dieser FAQ besprochen wird.

Wie läßt sich Perl mit anderen Sprachen wie Java, Python, REXX, Scheme, oder Tcl vergleichen?

In manchen Bereichen vorteilhaft, in anderen weniger. Genau welche Bereiche gut oder schlecht sind ist oft eine persönliche Wahl, diese Frage im Usenet zu stellen bedeutet das Risiko einen unproduktiven heiligen Krieges herauszufordern.

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://language.perl.com/versus/ zu finden, falls Sie es gar nicht lassen können sollten.

Kann ich [Aufgabe] in Perl bewältigen?

Perl ist flexibel und erweiterbar genug, daß Sie es für so ziemlich jede Aufgabe verwenden können sollten, 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üßten. Es liegt am Ende bei Ihnen (und möglicherweise Ihrem Management), welche Aufgaben in Perl gemacht werden und welche nicht.

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

Wo dies gesagt ist; 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 enfallen sind unter anderem prolog and matlab.

Wann sollte ich ich nicht in Perl programmieren?

Wenn Ihr Chef es verbietet--aber denken Sie 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 Contextwechselnden Code, komplexe multithreadende Shared-Memory-Anwendungen oder extrem große Anwendungen vermutlich nicht so gut geeignet. Auffällig genug: perl selbst ist nicht in Perl geschrieben worden.

Der neue Maschinencode-Compiler für Perl könnte einmal die zuvor genannten Einschränkungen zu einem Grade beseitigen, dabei bleibt jedoch, daß Perl eine fundamental dynamisch typisierte Sprache ist und keine statisch typisierte. Man wird niemanden dafür schelten können, wenn er Perl nicht soweit vertrauen möchte, 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." 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 korrigierend ausführen, daß 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, daß ein Programm einmal in echte Maschinensprache kompiliert werden muß und dann mehrfach ausgeführt werden kann, ein Skript hingegen jedesmal erneut übersetzt werden muß, wenn es verwendet wird.

Perlprogramme werden (normalerweise) weder im engeren Sinne kompiliert noch im engeren Sinne interpretiert. Sie können in Bytecode-Form kompiliert werden (soetwas wie eine virtuelle Perl-Maschine) oder in komplett adere Sprachen, wie C oder Assembler. Man kann nicht durch einfaches drüberschauen feststellen, ob die Quelltexte dazu gedacht sind, nur im Interpreter, im Parse-Tree-Interpreter, im Bytecode-Interpreter, oder im Maschinensprachencompiler verwendet zu werden, daher ist es so schwer hier eine definitive Antwort zu geben.

Wo heutzutage "Skript" und "skripten" Begriffe geworden sind, die von skrupellosen 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 haben manche Perl-Programmierer aufgehört, sie überhaupt noch zu verwenden.

Was ist ein JAPH?

Dies sind die "just another perl hacker" Signaturen, mit denen manche Leute ihre Postings unterschrieben. Randal Schwartz hat sie berühmt gemacht. Etwa 100 der früherensind unter http://www.cpan.org/misc/japh erhältlich.

Wo erhalte ich eine Liste mit Witzen von Larry Wall?

Über hundert Witze von Larry, aus Postings oder Source Code können auf http://www.cpan.org/misc/lwall-quotes.txt.gz gefunden werden.

Wie kann ich meinen Sysadmin/Chef/Mitarbeiter davon überzeugen, Perl (-version 5/5.8.6) anstelle einer anderen Programmiersprache zu verwenden?

Sollten Ihr Chef oder die Mitarbeiter Sorgen vor Software ohne Support haben, oder vor Software, die nicht mit dem Betriebssystem ausgeliefert wird, können Sie versuchen an deren eigenen Vorteil zu appellieren. Sollten Programmierer produktiver werden können, wenn ihnen Perl-Konstrukte, -Funktionalität, -Einfachheit und -Mächtigkeit zur Verfügung stehen, wird ein typischer Manager/Chef/Mitarbeiter damit zu überzeugen sein. Ginge es darum, Perl überhaupt zu verwenden, ist es manchmal auch hilfreich, darauf hinzuweisen, daß die Auslieferungszeiten im Vergleich zu anderen Sprachen kürzer werden können.

Sollten Sie ein Projekt mit einem Kapazitätsengpass haben, genaz besonders in Hinblick auf Übersetzung und Testen, wird Perl ziemlich sicher einen gangbaren schnellen Ausweg bieten. In Verbindung mit Überzeugungsanstrengungen sollten Sie nicht vergessen anzumerken, daß Perl bei vielen großen Software- und Computerhardware- Firmen überall in der Welt mit sehr verläßlichen und wertvollen Resultaten weitreichend verwendet wird. Tatsache ist, viele Unixhersteller liefern das Betriebssystem mit Perl aus. Support ist nicht weiter als ein Newsposting entfernt, sollten sich die Antworten nicht schon in der umfangreichen Dokumentation, deren Teil diese FAQ ist.

Siehe http://www.perl.org/advocacy/ für weitere Informationen.

Begegnet Ihnen Zurückhaltung gegenüber eines Upgrades von einer älteren Perlversion, weisen Sie darauf hin, daß die Version 4 vom Perlentwicklerteam nicht weitergeführt und nicht weiter unterstützt wird. Ein weiteres dickes Verkaufsargument für Perl5 ist die große Anzahl an Modulen und Erweiterungen, die die Entwicklungszeit für jede Aufgabe stark reduzieren. Erwähnen Sie auch, daß die Unterschiede zwischen den Versionen 4 und 5 von Perl wie die Unterschiede zwischen awk und C++ sind. (Naja, ok, vielleicht nicht so deutlich, aber die Idee haben Sie verstanden?) Wenn sie Support und eine sinnvolle Garantie wollen, daß die Entwicklung in der Zukunft weitergeht, müssen Sie die Produktionversion verwenden. Im Dezember 2004 bedeutet das, entweder 5.8.6 (vom Oktober 2004), oder eine oder eine Version wie 5.6.2 (vom November 2003; eine "Maintenance Release", die Perl 5.6 auf neueren Systemen kompilierfähig macht, denn 5.6.1 wurde im April 2001 veröffentlicht) oder 5.005_03 (vom März 1999), obwohl 5.004_05 gar nicht so schlecht ist, wenn Sie unbedingt so eine alte Version (vom April 1999) aus Gründen der Stabilität brauchen. Alles ältere als 5.004_05 sollte nicht verwendet werden.

Besonders hervorzuheben ist die massive Fehlerjagd nach Problemen mit Pufferüberläufen, die in der Version 5.004 aufgetreten waren. Alle früheren Versionen, inklusive Perl4, werden als unsicher angesehen und sollten so schnell wie möglich durch ein Upgrade repariert werden.

Im August 2000 wurde in allen Linux-Distributionen ein neues Sicherheitsproblem in dem optionalen 'suidperl' gefunden (es wird defaultmäßig weder erstellt noch installiert), das für die Perl-Versionsreihen 5.6, 5.005, und 5.004 gilt, siehe http://www.cpan.org/src/5.0/sperl-2000-08-05/ Die Korrekturverionen 5.6.1 und 5.8.0 schließen diese Sicherheitslücke. Die meisten, wenn nicht sogar alle, Linuxdistributionen bieten Patchs für diese Sicherheitslücke an, see http://www.linuxsecurity.com/advisories/ , aber es ist vorzuziehen auf mindestens Perl 5.6.1 zu upgraden.

AUTOR UND COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen und Nathan Torkington. All Rechte vorbehalten.

Diese Dokumentation kostet nichts; man darf sie entsprechend der gleichen Bedingungen wie denen von Perl weiter verbreiten und/oder verändern.

Unabhängig von den Umständen, wie diese Doku verbreitet wurde, sind alle Code-Beispiele darin in der Public Domain. Dir wird erlaubt und du wirst ermutigt, sie und beliebige davon abgeleitete in deinen Programmen zum Spaß oder für Profite zu verwenden. Ein einfacher Kommentat im Code, der die FAQ würdigt, wäre nett, ist aber nicht erforderlich.

Übersetzer

Sören M. Laird Sörries (info {at} perlmongers . de)

Hinweise

Inhaltliche Fehler etc. können gern geändert werden, allerdings sollte dieses Dokument möglichst die genaue Übersetzung des englischen Originals sein.

Username: