On Mon, 10 Jan 2000, Thomas Schwarze wrote:
Hallo,
immer wieder wird gesagt, dass Perl gut sei bzw. besser als z.B. ein Shell-Script. Kann mir jemand mal sagen, wo der Unterschied ist? Als Perl-Anfänger: "Gut": ja! , "besser": kommt drauf an, was Du machen willst. Für "kleine" Sachen benutze ich die Shell, sed und
ACK, liegt aber mehr daran, daß ich "mit SED und AWK groß geworden" bin. Perl kann aber genauso gut wie awk/sed von der Kommandozeile für kleine Aufgabenstellungen benutzt werden. Das ist hier wohl eher eine Philosophie (schreibt man das noch so?) Frage.
awk, für "größere" Perl. Ein Vorteil ist beispielsweise, daß Du, wenn Du in einem Shell-Skript ein paar seds und awks hat, jedesmal ein neuer Prozeß aufgemacht wird; das ist, wenn Du es mit Perl löst, nicht der Fall.
Wichtig!!! Es ist schon interessant, in einem wirklich großen Shell Skript mit vielen Aufrufen externer Programme zu beobachten, wieviel das OS ausssen herum mit Prozeßverwaltung zu tun hat!
Ist Perl schneller, kleiner, universeller oder was? weiss nicht, sieht aber manchmal so aus; weiss nicht; ja, gibt es auch auf anderen Plattformen
kleiner: egal (zumindest für mich, da beide meine Platte/meinen Hauptspeicher nicht füllen) universeller: na ja, perl und gnu-tools (gawk, sed,...) gibt es für viele Plattformen. schneller: JA Wir haben hier in der Firma ein AWK-Programm, daß Daten im Bereich von 500MB einzulesen und zu verarbeiten hatte, auf Perl umgestellt. Ergebnis: Perl ist um mehr als den Faktor 20 schneller. Außerdem ist Perl viel mehr als awk, viel mehr als sed, ...
Ist es ein Interpreter wie die Shell oder ein Compiler? hmm, Perl "spricht" von Compilation Errors, kann aber ohne Compileraufruf gestartet werden. Vielleicht kompiliert er beim Start ?
Perl ist nach meinem Wissen so wie die alten Pascal-Compiler auf dem Apple II (kennt den noch einer hier?). Dort wurde der Source Code nicht in Maschinensprache sondern in den sogenannten P-Code übersetzt. Dieser wurde dann interpretierend abgearbeitet. Perl ist also ein compiler (von source nach p-code) und ein Interpreter (p-code). Das Compilieren passiert dabei beim Starten des Programmes automatisch, so daß sich Perl nach außen wie ein Interpreter verhält.
Wo ist, wenn ich nicht ein überall lauffähiges Shell-Script benutze, der Vorteil gegenüber einem Compiler (Pascal, C usw.)? Der "turn-around" in der Entwicklung geht schneller: Quelle ändern und aufrufen. Aber C++ ist auch sehr schön ...
Mit anderen Worten, lohnt sich ein Umstieg und warum?
Das kann ich Dir so nicht sagen. Wenn Du ein bash-Skript hat, welches 27 Unter-bash-Skripten aufruft, von denen jedes widerum von awks seds und Schleifen nur so wimmelt, dann würde ich es mal mit Perl versuchen. "Auf der Arbeit" (sorry, wie drückt man das besser, aber ohne die Amateurfunk-Abkürzung QRL aus ????) habe ich begonnen, ein "Programm" zu schreiben, das verschiedene Arten von Ausgabedateien anonymisiert (Zeitstempel und andere laufabhängige Ausgaben entfernt) und mittels cmp zwei solcherart anonymisierte Dateien vergleicht. Das ist mir mit Shell-Mitteln zu aufwendig und für eine C++-Entwicklung zu klein.
Ich kenne Entwickler, die schreiben schneller C/C++ als ich sed und awk Programme (sie tun auch sonst nix anderes und können das dann entsprechend gut). Meine Meinung ist, daß gerade das einer der Hauptvorteile von Unix ist. Es gibt keine beste Lösung, sondern fast immer nur viele mögliche Lösungen. Jeder muß für sich selber entscheiden, ob er mit seiner Version zufrieden ist oder nicht. Ich persönlich bin in Perl nicht viel mehr als ein Anfänger, weil ich fast alles mit anderen Unix Tools machen kann (die gab es auch vor Perl schon und vor allem in jeder mit bekannte Unix Version). Selbst wenn etwas in Perl eigentlich viel eleganter geht: Ich brauche es nicht. Andererseits wird jetzt wahrscheinlich jeder CGI-Programmierer aufschreien und sein Loblied auf Perl loslassen. Wie gesagt: eine Philosophie Frage. Andreas --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com