Jonny: Array in einer while Schleife

Hallo,

hat jemand eine Erklärung dafür, weshalb mein Script an folgender Stelle hängen  bleibt?

my @plist=qx{ps -ef};

while(<@plist>) {
   print;
}

Ich habe keine Ahnung warum das so sein könnte. Ich habe mal mit print @plist; getestet und die Prozessliste ist tatsächlich im Array, aber ich möchte gerne jede Zeile bearbeiten. Was mache ich da falsch?

Mfg,
Jonny

  1. Tag Jonny.

    hat jemand eine Erklärung dafür, weshalb mein Script an folgender Stelle hängen  bleibt?
    while(<@plist>) {
       print;
    }

    Vermutlich meinst du sowas:

    foreach $proc (@plist) {
      print $proc;
    }

    Siechfred

    --
    »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
    1. 你好 Siechfred,

      Vermutlich meinst du sowas:

      foreach $proc (@plist) {
        print $proc;
      }

      Nein, viel wahrscheinlicher meint er das hier:

      foreach my $proc (@plist) {
        print $proc;
      }

      ;-)

      再见,
       CK

      --
      Fortune: If opportunity came disguised as temptation, one knock would be enough.
      http://wwwtech.de/
      1. Hola,

        foreach my $proc (@plist) {
          print $proc;
        }

        was spricht eigentlich gegen..

        foreach (@plist)   {
        print $_;
        }

        Ich persönlich bevorzuge nämlich immer diese Variante.

        Markus.

        --
        sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|
        1. 你好 Markus,

          was spricht eigentlich gegen..

          foreach (@plist)   {
          print $_;
          }

          Ich persönlich bevorzuge nämlich immer diese Variante.

          1. Grausliger Einrueckungsstil ;-)
          2. Finde ich das nicht so gut lesbar.

          再见,
           CK

          --
          Die Summe zweier gerade Primzahlen ist immer eine Quadratzahl.
          http://wwwtech.de/
      2. Tag Christian.

        Nein, viel wahrscheinlicher meint er das hier:
        foreach my $proc (@plist) {
        [...]

        Hm, habe ich da etwa das »use strict;« im Ausgangsposting überlesen?

        ;-)

        dito :-)

        Siechfred

        --
        »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
        1. 你好 Siechfred,

          Nein, viel wahrscheinlicher meint er das hier:
          foreach my $proc (@plist) {
          [...]

          Hm, habe ich da etwa das »use strict;« im Ausgangsposting überlesen?

          Selbstverstaendlich. Oder traust du dem OP zu, soetwas zu vergessen?

          ;-)

          再见,
           CK

          --
          Der Geist ist alles. Du wirst, was du denkst.
          http://wwwtech.de/
      3. foreach my $proc (@plist) {
          print $proc;
        }

        Jetzt verstehe ich noch immer nicht, weshalb das nicht mit einer while -Schleife funktioniert. Warum bleibt das Script dort hängen?

        Mfg,
        Jonny

        1. Hallo Jonny,

          Jetzt verstehe ich noch immer nicht, weshalb das nicht mit einer while -Schleife funktioniert. Warum bleibt das Script dort hängen?

          Weil <BLA> der Zeilenweise Eingabeoperator in Perl ist. Und die Eingabe hast Du ja schon bei qx{...} bekommen und in @plist gespeichert - @plist ist *kein* Dateihandle wie bspw. STDIN, sondern ein Array. Siehe:

          < http://de.selfhtml.org/cgiperl/funktionen/einausgabe.htm#open>
          < http://de.selfhtml.org/cgiperl/sprache/schleifen.htm#foreach>

          Viele Grüße,
          Christian