Bjoern: Anfängerfrage

Kann mir jemand den Unterschied der folgenden Scripts erklären ?

Bei folgendem Script wird als Ergebnis "Dienstag" ausgegeben (was mir auch einleuchtet):

@eingabe = ("Montag","Dienstag");
shift(@eingabe);
print @eingabe;

Ich habe aber auch schon oft gesehen, daß shift folgendermaßen angewendet wird:

@eingabe = ("Montag","Dienstag");
@eingabe = shift;
print @eingabe;

Bei diesem Script wird kein Ergebnis ausgegeben.
Was macht das shift denn in diesem Fall ?
Sorry, wenn die Frage so anfängerlike ist, aber ich weiß es nun mal nicht.
Gruß
Bjoern

  1. Hallo Bjoern

    Ich habe aber auch schon oft gesehen, daß shift folgendermaßen angewendet wird:
    @eingabe = ("Montag","Dienstag");
    @eingabe = shift;
    print @eingabe;
    Bei diesem Script wird kein Ergebnis ausgegeben.

    Vielleicht hilft dir die englische Beschreibung aus der neuen und endlich mal hypertextgerechten Aufbereitung der Perl-Doku weiter: http://www.perl.com/pub/doc/manual/html/pod/perlfunc/shift.html.
    Entscheidend dort der Satz ab "If ARRAY is omitted...".

    viele Gruesse
      Stefan Muenz

  2. Kann mir jemand den Unterschied der folgenden Scripts erklären ?

    Bei folgendem Script wird als Ergebnis "Dienstag" ausgegeben (was mir auch einleuchtet):

    @eingabe = ("Montag","Dienstag");
    shift(@eingabe);
    print @eingabe;

    Ich habe aber auch schon oft gesehen, daß shift folgendermaßen angewendet wird:

    @eingabe = ("Montag","Dienstag");
    @eingabe = shift;
    print @eingabe;

    Bei diesem Script wird kein Ergebnis ausgegeben.
    Was macht das shift denn in diesem Fall ?
    Sorry, wenn die Frage so anfängerlike ist, aber ich weiß es nun mal nicht.
    Gruß
    Bjoern

    im ersten fall ists klar, wenn hinter shift ein array angegeben wurde, dann wird das erste element aus dem array zurückgeliefert und aus dem array (@eingabe) gelöscht.

    im zweiten fall, wird hinter shift nichts angegeben wodurch sich shift im hauptprogramm auf das Array @ARGV bezieht und im unterprogramm auf @_ .

    da diese in diesem fall wohl leer waren,
    wurde @eingabe durch "" befüllt, also nix.

    so auch bei pop (macht dasselbe mit dem letzten element)