hallo Andres,
ein Validierer ist bei Perl nicht nötig.
Stimmt.
In gewisser weise ist er nötig, er ist doch in Perl eingebaut;-)
Das kann man so nicht sagen. Es mag dir vielleicht etwas haarspalterisch vorkommen, aber das, was du bei PERL einen "Validator" nennst, ist etwas anderes als der HTML-Validator.
Dazu muß man einfach mal überlegen, was der Validator (oder die Validatoren) des W3C macht/machen: diese Software prüft bei einer zu untersuchenden Seie, ob die Anweisungen (HTML-Tags) einem bestimmten Regelwerk - der gültigen W3C-Empfehlung - entsprechen. Bei HTML ist das gar nicht so sehr viel. Was zwischen den Tags steht, also dein Seiteninhalt, wird ignoriert, und am Ende bekommst du mitgeteilt, ob du dich beim Schreiben an die gültigen Regeln gehalten hast. Dem Validator ist es egal, welcher Browser hinterher deine Seite darstellen soll.
PERL ist es keineswegs egal, wer das Script ausführt, das macht der Interpreter nämlich selber. Und es gibt ungleich mehr mögliche und durchaus "valide" Anweisungen, denk nur mal daran, was du alles mit regulären Ausdrücken machen kannst. Ein paar "Regeln" gibt es natürlich auch, zum Beispiel, daß eine Klammer, in der Argumente stehen, geschlossen werden muß. Aber du kannst beliebige Variablen verwenden, die der Interpreter unmöglich alle vorher kennen kann. Er prüft also nicht (nur), ob dein Script einem starren Satz von Regeln folgt, sondern er schaut nach, ob er deine Anweisungen Zeile für Zeile befolgen kann. Kann er das nicht, wird ein entsprechender Hinweis ausgegeben - entweder auf der Konsole oder im Protokoll (log), und die Ausführung wird abgebrochen. Ein Browser wird jedoch immer versuchen, auch fehlerhaften HTML-Code irgendwie darzustellen, er bricht seine Arbeit nicht einfach ab, da der Browser selbst nicht prüft, sondern macht, was ihm aufgetragen wird.
Der "Code", also das Script, wird interpretiert, also Zeile für Zeiel ausgelesen und jede Zeiel wirkt als einzelner Befehl, der in Praxis umgesetzt werden soll
Stimmt meines Wissens leider auch nicht ganz. Perl arbeitet, genau wie Java, mit einer Virtual-Machine.
Dieses "genau wie JAVA" ist nicht richtig. JAVA benötigt kompilierten Code, ähnlich wie C/C++ (von dem es sehr viel übernommen hat). Wenn du eine JAVA-Applikation entwickelst, gehst du mindestens zwei Schritte: du erstellst ein Script, das zunächst gar nichts tut. Auf Grundlage dieses Scripts und der je nach Version vorhandenen Compilerbibliotheken stellt dann der Compiler Bytecode her, mit dem dann erst die virtuelle Maschine etwas anfangen kann. Dein Script kannst du, wenn alles funktioniert hat, wegwerfen.
Anders bei PERL. Da wird eben nichts kompiliert, du schreibst dein Script, fertig. Eine virtuelle Maschine, die mit der JVM vergleichbar wäre, gibt es nicht. Was dich möglicherweise irritiert, ist, daß du häufiger was von "Präcompiler" bei PERL lesen kannst. Das bedeutet jedoch nicht, daß dein Script als Grundlage für irgendwelchen Maschinencode genommen wird, den du dann in Form eines "Programms" irgendwo abspeichern kannst. Einiges vollzieht sich, während der Interpreter arbeitet, tatsächlich im Speicher deines Rechners, dort wird etwas Maschinencode erzeugt - aber eben nicht gespeichert. Das Thema ist aber zu umfangreich, um es hier in Form von Forumsbeiträgen ein für allemal zu erklären, außerdem kannst du ein bißchen was dazu in http://selfhtml.teamone.de/cgiperl/sprache/intro.htm nachlesen.
Sogar Larry Wall versteht Perl als einen Compiler. Das kann man unter anderem in Programmieren mit Perl nachlesen. Falls es dich interessiert, kann ich den Text mal zusammenfassen.
Danke, das wird aber nicht nötig sein. Dokumentationen zu PERL gibt es mehr als Sand am Meer, niemand kann alles kennen. Jeder sucht sich die Lektüre aus, die ihm am besten weiterhilft.
Da PERL schon ziemlich alt ist, hat es natürlich eine Menge Entwickler gegeben, die die eine oder andere Zutat erfunden haben. Es gibt durchaus die Möglichkeit, mit perl2exe ein kompilietres Programm herzustellen, das dann (scheinbar) ohne den Interpreter auskommt - Ähnliches gibt es auch für PHP. Diese Dinge gehören aber nicht unmittelbar zum Umfang der Sprache selbst, sondern sind zusätzliche und oft ziemlich nützliche Entwicklungen.
Grüße aus Berlin
Christoph S.