Hans: Auswerten von Perlscripten mit einem anderen Perlscript

Hallo liebe Leute,

ich habe ein Problem,
und zwar:

Wie fange ich in einem Script auf,
was ein anderes Script "ausspuckt" ?
Also in einer Sub-Action macht ein Script "print"
und ich will in einem Script das auffangen,
und zwar aus mehreren Scripten.

ich versuchte schon "include virtual...."
aber das ging ned wirklich,
Sprache sollte Perl sein,
Notfalls nehme ich aber alles was funktioniert ;-)

also, ein BEISPIEL:
ein Script namens "test111.cgi" schreibt in der Action "abc" das Wort "Tomate" und ein anderes Script namens "test999.cgi" schreibt in der Action "zzz" das Wort "Erdapfel"
wie fange ich das in einer anderen Perl-File so auf,
dass dann drin stehen würde

Tomate
Erdapfel

meine Idee geht in richtung

"print test111.cgi?action=abc"

aber das geht echt voll nicht.

Bitte gebt mir eine voll brauchbare Idee.
Also, vielen herzlichen Dank,
Euer Hans

  1. Tag Hans!

    Wie fange ich in einem Script auf,
    was ein anderes Script "ausspuckt" ?
    Also in einer Sub-Action macht ein Script "print"
    und ich will in einem Script das auffangen,
    und zwar aus mehreren Scripten.

    Kommandosubstitution ist Dein Freund. Und das geht so:

    $ausgabe = anderes-script.pl;

    In $ausgabe steht dann, was das andere Script ausgegeben hat. Achte auf die sogenannten Backticks, die linksgeneigten Hochkommas. Auf nem Windowssystem musst Du evtl.

    $ausgabe = perl anderes-script.pl;

    schreiben.

    ich versuchte schon "include virtual...."

    include virtual? Klingt nach SSI, aber Du machst doch Perl.

    also, ein BEISPIEL:
    ein Script namens "test111.cgi" schreibt in der Action "abc" das Wort "Tomate" und ein anderes Script namens "test999.cgi" schreibt in der Action "zzz" das Wort "Erdapfel"

    action? haeh?

    meine Idee geht in richtung

    "print test111.cgi?action=abc"

    Diese Argumente kannst Du aber nicht so mit dem Fragezeichen getrennt angeben. Das mit der Kommandosubst. ist wie wenn Du das Script von der Kommandozeile aus starten wuerdest, nur das der Output dann eben in der Variable rauskommt. Wenn Parameter, dann musst Du die durch Leerzeichen getrennt uebergeben und im aufgerufenen Script aus @ARGV auslesen.

    So long

  2. Hallo Hans,

    Wie fange ich in einem Script auf,
    was ein anderes Script "ausspuckt" ?

    [...]

    Ich hätte 2 Möglichkeiten anzubieten:

    1. mit Pipes und open()              
       open(PIPE, "test111.cgi action=abc ") or die "Can`t establish Pipe from test111.cgi: $!";
          my @input = <PIPE>;
       close PIPE;

    für Windows musst Du vor dem Skript noch den Perl-Interpreter aufrufen.

    2. die hat Calocybe schon genannt :-)

    Aber einen Hinweis hab` ich dennoch *freu*. Wenn Du Deinen Input über CGI.pm ausliest, geht auch die Alternative mit der Kommandozeilenübergabe der Parameter anstelle von @ARGV.

    aber das geht echt voll nicht.
    Bitte gebt mir eine voll brauchbare Idee.

    Da krisch Plack, voll fett ey ;-)

    Gruß AlexBausW