Fisch: aus Perl Skript einen Linux Befehl ausfühen

Hallo, wieder ein Problem
ich möchte in meinem Perlskript einen Linux Befehl ausführen.
ich mache es zur zeit mit

system(" befehl ");

leider geht es nicht, was mache ich falsch, gibt es noch eine andere Möglichkeit?

mfg#

Fisch

  1. Hi,

    ich möchte in meinem Perlskript einen Linux Befehl ausführen.
    ich mache es zur zeit mit

    system(" befehl ");

    leider geht es nicht, was mache ich falsch

    Ich kann nur raten, was du falsch machst: du hast die Pfadangaben
    nicht gesetzt? ,) Ausserdem gehoeren die Leerzeichen nicht in die
    Quotas, so das das wahrscheinlich so aussehen muesste:

    system("pfad/befehl");

    gibt es noch eine andere Möglichkeit?

    klaro ,) ueber open:

    open(BEF,"pfad/befehl parameter ");

    so liest du die STDOUT ein:

    while(<BEF>)
    {
    print $_;
    }
    close(BEF);

    Um in STDIN zu schreiben:

    open(BEF," pfad/befehl parameter");

    So schreibst du in STDIN:

    print BEF "STDIN-Schreibsel ,)";

    close(BEF);

    Aber EIGENTLICH steht das alles in SelfHTML und in allen guten
    Perl-Docus oder Handbuechern ,)

    mfg
    CK1

    1. Ich kann nur raten, was du falsch machst: du hast die Pfadangaben

      Das macht wenig Sinn.

      system("pfad/befehl");

      Wenn ein Fehler auftreten kann sollte man ihn stets abfangen, wie Cheatah es vorgeschlagen hat. Also

      system "pfad/befehl" or die "Kann pfad/befehl nicht starten: $!";

      open(BEF,"pfad/befehl parameter ");

      Hier sollte auch geprüft werden, ob ein Fehler aufgetreten ist.

      close(BEF);

      Hier auch.

      open(BEF," pfad/befehl parameter");

      Hier auch.

      close(BEF);

      Hier auch.

      Peter

  2. Hi,

    leider geht es nicht, was mache ich falsch, gibt es noch eine andere Möglichkeit?

    "geht nicht" geht nicht. Wir können Dir nur helfen, wenn Du eine Fehlerbeschreibung mitlieferst. Als erstes solltest Du Dir aber angewöhnen, bei _allen_ Operationen dieser Art (also auch z.B. open) den Fehlercode abzufragen:

    system('xyz') or die "Kann xyz nicht ausfuehren: $!";

    Anschließend ins Errorlog des Servers schauen. Bei CGI-Scripts benutze auch

    use CGI::Carp 'fatalsToBrowser';

    Cheatah