|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Perl Scripts ausführen
|
Seitenanfang |
Hallo!Ich bin gerade dabei mich mit Perl eingehender zu beschäftigen. Leider bin ich dabei schon am Anfang auf Probleme gestoßen. In der ersten Zeile gebe ich den Pfad zu Perl an, soweit ok. Wenn ich danach aber gleich schreibe zB. print"Das ist ein Test"; und das Script auf meinem lokalen Testserver via http://localhost/cgi-bin/test.pl im Browser aufrufe, bekomme ich einen Error 500. Ich muss zuerst print"Content-type:text/html"; eingeben, bevor es geht. Aber da gibts dann noch andere Programme, bei denen der Benutzer zuerst was eingeben soll, einfach auf der tastatur, dann soll die Eingabe verwarbeitet werden. Das funktioniert dann überhaupt nicht, wenn es als HTML angesehen wird. Was gibt es denn noch für Möglichkeiten, Perl auszuführen? Das Buch, was ich mir gekauft habe, ist da sehr schweigsam zu diesem Thema. Ich komm da leider nicht ganz mit. Wie kann ich Perl noch anderst als über cgi-bin ausführen? Vielen, vielen Dank für eure Hilfe schon mal im Voraus. Grüße, Nash
Datum: 18.11.2004-15:44

|
re: Perl Scripts ausführen
|
Seitenanfang |
wenn du script über den browser ausführen willst, dann gibt es keine signifikant andere möglichkeit, schau dir dazu CGI.pm an (http://search.cpan.org/~lds/CGI.pm-3.05/CGI.pm). aber du kannst perl natürlich auch "einfach so" ausführen. öffne eine command-shell (windows xp: start -> ausführen -> cmd, win 98: start -> ausführen -> command), wechsel in das verzeichnis, wo dein script liegt und gib perl script.pl ein. falls das nicht geht, musst du den pfad zu perl\bin\ zu %PATH% (umgebungsvariable) hinzufügen.
Datum: 18.11.2004-18:29

|
re: Perl Scripts ausführen
|
Seitenanfang |
| Hallo! Danke für deine Antwort. Nun ist das schon mal geklärt wie man die Scripte ausführen kann. Nun bleibt noch die Frage, ob das normal ist, dass ich immer zuerst print"Content-type:text/html"; eingeben muss, wenn ich was anderes als einen Error 500 sehen will. Wenn mir da auch noch jemand helfen könnte, wäre ich sehr dankbar. Grüße, Nash
Datum: 18.11.2004-18:39

|
re: Perl Scripts ausführen
|
Seitenanfang |
japp, das ist auch normal (übrigens: die lesbarkeit wird erhöht, finde ich, wenn du ein leerzeichen zwischen print und dem string ließest), denn http basiert darauf, dass man einen header zurückliefert, der den content beschreibt. fragst du nun zum beispiel den server an und der findet die datei nicht, gibt er dir einen Status: 404 Not Found zurück und eventuell noch einen content-type und ein dokument. Nun wird, wenn du eine ausgabe machst und den status nicht explizit angibst, immer 200 OK gesetzt, den content-type (=anweisung an den browser, was er damit tun soll, text/html stellt er als html dar, image/jpeg zB würde er versuchen als bild darzustellen) musst du aber immer noch selbst setzen, um den browser zu informieren, was für inhalt nun kommt. der http-standard sieht vor, dass man zwischen header (=infos für den client) und body (=eigentliches dokument) eine leerzeile lässt, daher die zwei \n.wenn du nun keinen content-type übermittelst, merkt das der server und sieht, dass das falsch ist und nicht den spezifikationen entspricht und spuckt daher einen 500 Internal Server Error aus. sag bescheid, wenn noch fragen da sind.
Datum: 18.11.2004-22:11

|
re: Perl Scripts ausführen
|
Seitenanfang |
| Na wenn das normal ist, dann ists ok. Danke für deine Super Erklärungen und die schnelle Hilfe, vielen Dank! Soweit wäre alles geklärt. *freu* Danke nochmals und Grüße, Nash
Datum: 19.11.2004-10:15

|
re: Perl Scripts ausführen
|
Seitenanfang |
Hallo!Jetzt habe ich ein bißchen weitergemacht mit Perl und bin nun zu folgendem Programm gekommem: print "Bitte geben Sie die erste Zahl ein "; chomp($eins = <STDIN>); print "Bitte geben Sie die zweite Zahl ein "; chomp($zwei = <STDIN>); $ergebnis = $eins * $zwei; print "Das Ergebnis ist $ergebnis";
Wie GENAU führe ich das jetzt aus? Über cgi-bin gehts nicht, da wird einfach alles per print ausgegeben, ist klar. Aber ich habe es nun über start-ausführen versucht, das hat aber nicht hingehauen. Ich muss sagen, dass ich den Teil aber auch noch nicht ganz verstanden habe. Wäre super, wenn sich nochmal jemand die Zeit nehmen könnte und mir das Schritt für Schritt erklären könnte. Ich wäre sehr dankbar für jede Hilfe. Grüße, Nash
Datum: 25.11.2004-11:51

|
re: Perl Scripts ausführen
|
Seitenanfang |
was meinst du mit "Aber ich habe es nun über start-ausführen versucht, das hat aber nicht hingehauen"? so liest du von der commandline, wenn du das per CGI ausführen willst, musst du die parameter in ein formular geben und dann auslesen. mal dein beispiel als cgi:
#!/usr/bin/perl use strict; use CGI;my $CGI = new CGI; my $params = $CGI->Vars; print "Content-Type: text/html\n\n"; print "<html><body>"; if(defined $$params{'zahl1'} && defined $$params{'zahl2'}) { my $ergebnis = $$params{'zahl1'} * $$params{'zahl2'}; print "<br>Das Ergebnis ist $ergebnis</b>"; } print qq~ Bitte geben Sie zwei zahlen ein, die multipliziert werden sollen: <form action="test.pl" method="get"> <input type="text" name="zahl1"> * <input type="text" name="zahl2"> <input type="submit" value="berechne"> </form> </body></html> ~;
Datum: 25.11.2004-12:35

|
|

|

|

|
 |

|

|
|