linux-l: CGI-Script im CGI-Script aufrufen

Oliver Hillmann oh at novaville.de
Di Jan 30 20:53:43 CET 2001


On Tue, 30 Jan 2001, Manuel Tennert wrote:

> In der letzten else-Anweisung versuche ich dann mit Hilfe von
> system("perl maillog.pl"); ein weieteres Script aufzurufen. Leider aber
> schreibt er mir dann, nachdem er auf eine Fehlerseite wechseln soll,
> Location blablabla auf dem Bildschirm. Gibt es auch noch eine andere
> Möglichkeit ein CGI an dieser Stelle aufzurufen, ausser mit System ???
> Klar ich koennte den Quelltest des anderen Scripts zum einen in eine
> subroutine packen und die dann aufrufen lassen, leider aber wird mir das
> script dann ein wenig zu lang.

Wie isses mit do() oder require()? STDOUT kannste umbiegen mit

open(STDOUT, ">/dev/null");

oder mit

open(STDOUT, ">&F");

wenn F schon ein offenes Filehandle ist.

close(STDOUT);

geht auch, aber danach isses weg... Oooch blöd. man perlfunc (und
dann mit /^ *open nach dem open Befehl suchen) hat dazu ein
Beispiel, auch wie Du vorher STDOUT nach woandershin sicherst, falls
Du Dein STDOUT noch brauchst. In Kürze (und per Cut&Paste :)

open(OLDOUT, ">&STDOUT");
open(STDOUT, ">irgendnedatei");
do "maillog.pl";
open(STDOUT, ">&OLDOUT);

Vielleicht auch ein eval {} um das do?

Viel Glück!

Oli
P.S.: An die Perl-Hengste? Geht das auch so?

{
  local *STDOUT;
  open(STDOUT, ">wohinauchimmer");
  do "maillog.pl";
}

ohne dass ich STDOUT vorher in einen anderen Filehandle buffern
muss? Und trotzdem habe ich den alten Handle nach dem Block wieder?
Wegen local? Danke :) (Ich probiers gleich mal aus.. :)



Mehr Informationen über die Mailingliste linux-l