Der folgende Beitrag wurde am 01. 04. 2007, 15:59 Uhr von wusel101 veröffentlicht.
Hallo!
Habe die Lösung für das im Archiv z.B. unter:
http://forum.de.selfhtml.org/archiv/2001/5/t24555/
beschriebene Problem (leere Variable: STDIN lässt sich nicht
einlesen) per Zufall mit "try + error" gefunden:
Habe (wie viele) zum Auffinden von Fehlern am Anfang der Perlscripts:
#!/usr/bin/perl --
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use CGI qw(:standard); print header();
warningsToBrowser(1);
Soweit so gut. Später werden dann Formulardaten eingelesen mit:
if($ENV{'REQUEST_METHOD'} eq 'GET') { $Daten = $ENV{'QUERY_STRING'} }
else { binmode STDIN;
# bzw.: Einlesen im POST-mode, $Daten bis Länge des Strings:
read STDIN, $Daten, $ENV{'CONTENT_LENGTH'}; } ;
Dann war aber jedesmal unerklärlicherweise $Daten LEER.
ABER:
sobald ich die Zeilen am Anfang wegmache, insbesondere die Zeile:
use CGI qw(:standard); print header();
funktioniert es wieder _tadellos_ !!!
D.h. (...eigentlich unerklärlicherweise) führt die "Fehleranzeigeroutine" zu einem scheinbar leeren STDIN.
(Nur "scheinbar", denn $ENV{'CONTENT_LENGTH'} ergab auch hier _immer_ einen Wert grösser Null, selbst wenn $Daten einfach nur leer blieb, was ja ein Widerspruch in sich ist und nicht sein konnte. )
Gruss,
Chris
www.salsa.at
Der folgende Beitrag wurde am 01. 04. 2007, 16:03 Uhr von Cheatah veröffentlicht.
Hi,
> Habe die Lösung für das im Archiv z.B. unter:
> http://forum.de.selfhtml.org/archiv/2001/5/t24555/
ui.
> sobald ich die Zeilen am Anfang wegmache, insbesondere die Zeile:
> use CGI qw(:standard); print header();
> funktioniert es wieder _tadellos_ !!!
Ei.
> D.h. (...eigentlich unerklärlicherweise) führt die "Fehleranzeigeroutine" zu einem scheinbar leeren STDIN.
Absolut nicht unerklärlicherweise. In STDIN liegen die POST-Daten, die vom CGI-Modul initial eingelesen werden, was die Standard-Eingabe leert.
> (Nur "scheinbar", denn $ENV{'CONTENT_LENGTH'} ergab auch hier _immer_ einen Wert grösser Null, selbst wenn $Daten einfach nur leer blieb, was ja ein Widerspruch in sich ist und nicht sein konnte. )
Der HTTP-Header Content-Length sagt auch dann noch, wie viele Daten übertragen wurden, wenn diese bereits gelesen worden sind. Aus welchem Grund sollte man eigentlich die POST-Daten selbst analysieren wollen? Das CGI-Modul meistert diese Aufgabe hervorragend.
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 04. 2007, 16:33 Uhr von _roro veröffentlicht.
Moin,
mit PERL STDIN einlesen? Das geht so:
my $in = <STDIN>; # Script wartet auf Eingabe....
print chomp($in), "\n"; # gibt das oder die eingegebenen Zeichen aus, nachdem [Enter] gedrückt wurde.
Du siehst also, mit einem einfachen print-Befehl, was an STDIN eingegeben wurde.
--roro
Der folgende Beitrag wurde am 02. 04. 2007, 08:51 Uhr von Siechfred veröffentlicht.
> Du siehst also, mit einem einfachen print-Befehl, was an STDIN eingegeben wurde.
Ähm, es ging doch um CGI, oder?
Siechfred
--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
Der folgende Beitrag wurde am 01. 04. 2007, 16:41 Uhr von *Markus veröffentlicht.
Hallo,
> ABER:
> sobald ich die Zeilen am Anfang wegmache, insbesondere die Zeile:
>
> use CGI qw(:standard); print header();
>
> funktioniert es wieder _tadellos_ !!!
Wenn du einen Header _vor_ der Datenaufbereitung ausgibst, wird alles nach diesem Befehl als text/html, bzw text/plain interpretiert.
Markus
--
http://www.apostrophitis.at
Der folgende Beitrag wurde am 01. 04. 2007, 19:37 Uhr von Struppi veröffentlicht.
> #!/usr/bin/perl --
> use CGI;
Du bindest hier das Modul ein...
>
> if($ENV{'REQUEST_METHOD'} eq 'GET') { $Daten = $ENV{'QUERY_STRING'} }
> else { binmode STDIN;
> # bzw.: Einlesen im POST-mode, $Daten bis Länge des Strings:
> read STDIN, $Daten, $ENV{'CONTENT_LENGTH'}; } ;
Warum nutzt du es nicht?
Struppi.
--
Javascript ist toll (Perl auch!)
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4