Michael Schröpl: Perl Anfänger

Beitrag lesen

Hi Steffen,

Ich habe auf mein PC Win98 ein Apache für Win installiert.
(wampp-0.2.1c)

warum?

Nun habe ich mir das Buch Einführung in Perl gekauft von O'Reily.
und nun möchte ich diese Beispiele nach machen.

Um Perl zu verwenden, brauchst Du keinen Webserver.

Diese gehen nicht weil jedes mal der Browser fehler Meldungen gibt.

Das liegt daran, daß Du an mehreren Fronten gleichzeitig kämpfst.

Ich rate Dir davon ab - lerne erst mal ein bißchen Perl, bevor Du
anfängst, CGI-Anwendungen zu schreiben, Deinen Webserver zu konfigu-
rieren und was Du sonst alles noch tun willst.

#!/usr/bin/per ---> wurde von mir angepaßt
#!\wampp-0.2.1c\perl\bin\perl.exe
print ( "Hallo Welt!\n");

Das ist als Perl-Skript durchaus brauchbar - als CGI-Anwendung aber
nicht.

gebe ich aber ein
#!\wampp-0.2.1c\perl\bin\perl.exe
print "Content-type: text/plain\n\n";
print ( "Hallo Welt!\n");
dann zeigt er es auch an

Weil Du hier die zusätzlichen Anforderungen der CGI-Schnittstelle
erfüllst. Das hat mit Perl nichts zu tun - der Webserver, welcher
die Ausgabe Deines Perl-Skripts ja nicht nur an den Browser liefern,
sondern diese noch um einige (Dir normalerweise unsichbare) Infor-
mationen ergänzen muß, hält Deine Beschreibung des Dokuments ohne
Angabe eines MIME-Type einfach für unzureichend.

schreibe ich nun noch folgendes
#!\wampp-0.2.1c\perl\bin\perl.exe
print "Wie heißen Sie" ;
$name = <STDIN>;
chomp ($name)
print "Hallo $name! \n";
zeigt er wieder fehler

Klar, weil wieder kein MIME-Typ an den Webserver gesendet wurde.

schreibe ich es aber wieder mit dem Befehl Text/plain
kommt zwar ein
<<Wie Heißen Sie>><<hallo !>>
aber keine Aufforderung wo ich meinen namen schreiben soll.

Was erwartest Du denn? Der Browser bekommt von Dir ein text/plain-
Dokument, d. h. etwas, das einen Inhalt, aber keine Struktur hat.
Und er macht damit genau das, was er mit einem reinen Textdokument
machen soll: Er zeigt dessen Inhalt an, ohne ihn auch nur im Geringsten
zu interpretieren.
Wenn Du im Browserfenster statt dessen irgendwelche Eingabeformulare
malen willst, dann mußt Du neben Perl und der CGI-Schnittstelle auch
noch etwas lernen, was der Browser in Deinem Sinne auswertet - nämlich
HTML. Und zusätzlich mußt Du den Inhalt dieses Formulars, der vom
Browser anschließend an den Server gesendet wird, auf diesem Server
wiederum von einem Perl-Skript über die CGI-Schnittstelle annehmen
und analysieren lassen.
In der Summe all dieser Aktionen hast Du dann eine richtige Client-
Server-Anwendung.

wer kann mir weiter helfen??

Am besten ist Dir damit geholfen, Deine Aktivität an dieser Stelle
erst mal zu stoppen und Dir eine andere Vorgehensweise zu raten.

1: Lerne so viel HTML. daß Du einfache Dokumente schreiben kannst.

2. Erweitere Deine HTML-Kenntnisse um die Definition von Formularen.

Hier verlassen wir HTML und wenden uns Perl zu:

3. Schreibe einfache Perl-Skripte, die Ausgaben nach stdout erzeugen.
   Halte Dich vorerst von der CGI-Schnittstelle fern; starte die Perl-
   Skripte über die DOS-Box.
   Übe Perl hinreichend gut; verwende "use strict;" und "perl -w".
   Deine Skripte sollten nach diesem Schritt "sauber" sein.

Nun kommt der Webserver ins Spiel:

4. Konfiguriere Deinen Webserver so, daß Du einfache CGI-Skripte
   starten kannst. (Diesen Schritt hast Du bereitzs hinter Dir.)

5. Lasse einfache CGI-Skripte laufen. (Diesen ebenfalls.)

Jetzt verbinden wir Perl und den Webserver:

6. Lerne die CGI-Schnittstelle von Perl ("use CGI;" ist für den
   Anfänger am sinnvollsten). Analysiere einfache CGI-Parameter;
   verwendet "CGI::Carp(fatalsToBrowser)" als Diagnosehilfe.

Und als nächstes verbinden wir Perl und das Eingabeformular:

7. Schreibe ein statisches HTML-Formular, das seine Daten an Dein
   CGI-Skript sendet; analysiere die empfangenen Daten und gibt das
   Ergebnis aus.

Und wenn Du das alles hinter Dir hast, sind die nächsten Schritte leicht:

8. Schreibe ein CGI-Skript in Perl, welches ein HTML-Dokument nach
   stdout schreibt, welches das in 7. verwendete Formular dynamisch
   erzeugt, so daß dessen Eingabe wieder an ein (anderes oder auch
   gleiches) CGI-Skript zurück gesendet wird.

9. Zapfe irgendwelche externen Quellen an (Dateien, Datenbanken etc.),
   um aus ihnen Inhalte zu lesen, welche das Aussehen des in 8. er-
   zeugten Formulars ggf. beeinflussen; speichere die von einem
   Formular empfangenen Werte in einer solchen externen Quelle.

Mit jedem dieser Schritte "reift" Deine Anwendung. Dabei sind es
nicht mal große Mengen an Quelltext, die jeweils dazu kommen - aber
es sind immer wieder neue Konzepte, Regeln und Techniken, die Du
lernen und beherrschen mußt.

Ist es besser alles in Linux zu haben?

Für Deine Aufgabenstellung ist die Plattform absolut uninteressant.
Win98 ist zwar nicht für alles geeignet, aber für Apache und Perl
reicht es allemal.
Ich selbst verwendet exakt Deine Konfiguration auf meinem PC daheim
und vermisse nichts dabei. Ein guter Editor ist allerdings hilfreich.

Dein Problem ist, daß Du im Moment viel zuviele Technologien gleich-
zeitig einzusetzen versuchst, ohne auch nur eine davon wirklich sicher
zu beherrschen.
Mache einen Schritt nach dem anderen wie oben beschrieben - dann wirst
Du mehr Erfolgserlebnisse haben und in der Summe schneller vorankommen,
als wenn Du mit Gewalt alles auf einmal versuchst.

Viel Spaß beim Lernen - Du hast einiges vor Dir.
     Michael