Steffen Müller: Perl Anfänger

Hallo
ich da ein Problem.
Ich habe auf mein PC Win98 ein Apache für Win installiert.
(wampp-0.2.1c)
sowie Perl usw.
Nun habe ich mir das Buch Einführung in Perl gekauft von O'Reily.
und nun möchte ich diese Beispiele nach machen.
Diese gehen nicht weil jedes mal der Browser fehler Meldungen gibt.

Beispiel.
nach Buch

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

nach dem ich diese aufrufe im Browser kommt es zu unterschiedlichen fehlmeldungen.

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

soweit so gut

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

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.
wer kann mir weiter helfen??

und Frage
Ist es besser alles in Linux zu haben?
Danke

Steffen

  1. Hallo,
    ist doch klar. Normalerweise brauchst du den Browser auch nicht dazu. Führe die Bsp. von der Eingabeaufforderung aus. Wenn sie dennoch im Browser ausführen willst, musst du eben einen Header angeben : also zB print "Content-type:text/plain\n\n"; oder print "Content-type:text/html\n\n";

    $xNeTworKx.

    1. 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";

      Wenn du sowas im Browser ablaufen lassen willst, musst du die CGI Schnittstelle verwenden. Das funktioniert nämlich so nicht.

  2. Hi,

    Beispiel.
    nach Buch

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

    Versuchs mal so:
     #!C:\wampp-0.2.1c\perl\bin\perl.exe
     print ( "Hallo Welt!\n");

    Ist es besser alles in Linux zu haben?

    Was fuer eine Frage :))

    #!C:\wampp-0.2.1c\perl\bin\perl.exe

    my $string = "Ist es besser alles in Linux zu haben?";
    $string =~ s/?/./gi;
    $string =~ s/Ist es/Es ist/gi;

    print $string;
    my $ok = <STDIN>;

    exit;

    Ciao,
     Wolfgang

  3. Hallo
    ich da ein Problem.
    Ich habe auf mein PC Win98 ein Apache für Win installiert.
    (wampp-0.2.1c)
    sowie Perl usw.
    Nun habe ich mir das Buch Einführung in Perl gekauft von O'Reily.
    und nun möchte ich diese Beispiele nach machen.
    Diese gehen nicht weil jedes mal der Browser fehler Meldungen gibt.

    Beispiel.
    nach Buch

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

    nach dem ich diese aufrufe im Browser kommt es zu unterschiedlichen fehlmeldungen.

    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

    soweit so gut

    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

    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.
    wer kann mir weiter helfen??

    und Frage
    Ist es besser alles in Linux zu haben?
    Danke

    Steffen

    Linux ist immer besser wenn es um Apache oder ähnliche Webserver zu machen. Wer ist auf die bescheuerte Idee gekommen apache für windows zu programmieren,d as ist doch schwachsinnig.

    mfg
    teal

    1. Hallo,

      [... FOTU entfernt ...]

      Linux ist immer besser wenn es um Apache oder ähnliche
      Webserver zu machen. Wer ist auf die bescheuerte Idee
      gekommen apache für windows zu programmieren,d as ist doch
      schwachsinnig.

      Gut konditioniert! [dsf 4.23] Pawlow laesst gruessen.

      Kannst du eigentlich nicht ueber deinen Tellerrand hinaus
      schauen? Warum sollte es nicht auch Faelle geben, in denen ein
      Windows zwingende Vorraussetzung ist?

      Gruesse,
       CK

  4. #!/usr/bin/per ---> wurde von mir angepaßt

    brauchst du unter win nicht machen , aber das ist egal.

    #!\wampp-0.2.1c\perl\bin\perl.exe
    print ( "Hallo Welt!\n");
    nach dem ich diese aufrufe im Browser kommt es zu unterschiedlichen fehlmeldungen.
    gebe ich aber ein
    #!\wampp-0.2.1c\perl\bin\perl.exe
    print "Content-type: text/plain\n\n";
    print ( "Hallo Welt!\n");

    Ist klar, denn
    print "Content-type: text/plain\n\n"; sagt dem browser erst was da kommt. Ohne die zeile print "Content-type: text/plain\n\n"; weiss der browser nicht was kommt, und zeigt es auch nicht an.

    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

    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.
    wer kann mir weiter helfen??

    Auch klar, denn die STDIN eingabe funktioniert nicht auf einer HTML seite weil es da keinen Bezugspunkt gibt. Du müsstest erst ein formular haben, darin dann ein Textfeld , das dann auslesen usw.

    Mach mal folgendes:

    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";

    Und führ das ganze mal in der dosbox aus: Also dosbox auf machen, dann in den ordner wechseln , wo das script ist, und dann perl script.pl eingeben dann kommt auch der Text und die eingabeaufforderung.

    und Frage
    Ist es besser alles in Linux zu haben?

    Dazu werden Dir sicher alle ein klares JA sagen, ich hab alles unter WIN ( zuerst 98 jetzt XP ) und komme wunderbar klar. Online ists natürlich eh auf unix servern.

    Danke

    Kein Thema

    Steffen

    Andreas

  5. Hallo
    ich da ein Problem.
    Ich habe auf mein PC Win98 ein Apache für Win installiert.
    (wampp-0.2.1c)
    sowie Perl usw.
    Nun habe ich mir das Buch Einführung in Perl gekauft von O'Reily.
    und nun möchte ich diese Beispiele nach machen.
    Diese gehen nicht weil jedes mal der Browser fehler Meldungen gibt.

    Beispiel.
    nach Buch

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

    nach dem ich diese aufrufe im Browser kommt es zu unterschiedlichen fehlmeldungen.

    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

    soweit so gut

    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

    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.
    wer kann mir weiter helfen??

    und Frage
    Ist es besser alles in Linux zu haben?
    Danke

    Steffen

    Hallo Steffen,

    hast Du wirklich keine Möglichkeit auf einer Shell zu üben???Macht
    mehr Spass....

    Bye Heide

  6. 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

  7. <<<

    Hallo Leute!

    Danke für Eure Hilfe.

    Steffen