Jörk Behrends: STDIN kann nur einmal übergeben werden !?

Beitrag lesen

Hallo Hansi!

Ich kann mir nun aber nicht vorstellen, daß man STDIN nur einmal auslesen kann. Oder? Ich denke natürlich in erster Linie an menschliches Versagen. Schließlich befasse ich mich erst seit ca. 3 Monaten intensiv mit Perl.

Ist aber so!

Man kann sich aber sein eigenes STDIN öffnen. Am besten nimmt man hierzu ein(e) PIPE.
Das ist eine virtuelle Datei oder ein Datenloch oder -Rohr ... Auf der einen Seite schreibst Du was rein und auf der anderen Seite liest Du es wieder aus:

#----------------------------------------------
use FileHandle;

my ($pipeOut, $pipeIn) = FileHandle::pipe();
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
print $pipeIn $buffer x 10;  #je nachdem, wie oft man auslesen möchte - mehr schadet aber nicht
$pipeIn->close;

nun STDIN verbiegen

open STDIN, "<&=" . fileno $pipeOut;

hier hinter kann man nun STDIN 10 mal auslesen ...

#----------------------------------------------

Hoffe das hilft erst mal weiter,
   Jörk