Thread Fehlermeldung: Frag zu einer Fehlermeldung (12 answers)
Opened by wolfgangk at 2003-12-03 12:49

Strat
 2003-12-03 15:46
#74208 #74208
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@array[1] ist auch in perl5 durchaus ok, wenn man dieses eine Element in einen Listenkontext bringen will. @array[1] verhaelt sich zwar haeufig genauso wie $array[1], aber bei manchen Funktionen gibt es da schon Unterschiede, weil sie unterschiedlich darauf reagieren, wenn da was im Listenkontext steht oder im skalarem Kontext.
Code: (dl )
1
2
open (FH, ....) or ...
$liste[0] = <FH>; # skalarer kontext

Code: (dl )
1
2
open (FH, ....) or ...
@liste[0] = <FH>; # listenkontext

<..> verhaelt sich naemlich, je nach Kontext, unterschiedlich. Im skalaren Kontext (Beispiel 1) gibt es eine Zeile zurueck, im Listenkontext (Beispiel 2) gibt es eine Liste aller gelesenen Zeilen zurueck, die erste Zeile wird $liste[0] zugewiesen. So, wo ist jetzt der Unterschied? Im Beispiel 1 kann man von <FH> noch die weiteren Zeilen lesen, im Beispiel 2 sind die jedoch weg (weil sie durch den Listenkontext schon gelesen wurden).
Achtung auch vor:
Code: (dl )
1
2
open (FH, ....) or ...
my ($var) = <FH>; # listenkontext

warnings (oder -w) vermuten jedoch, dass man sich da vertippt hat (ist wohl auch in 95% der Faelle so) und geben deshalb diese Warnung aus.

In Perl5 steht immer das Zeichen davor, was da zurückgegeben werden soll (also $ bei einem skalaren Wert, @ bei einer Liste und % bei einem Hash). Bei Perl6 aendert sich dieses Verhalten; da wird immer das Zeichen geschrieben, was die Variable beinhaltet (man kann sich denken, das @ oder % gehoert fix zum Variablennamen und aendert sich von daher nie). Meiner Meinung nach ist das perl6-verhalten intuitiver (beim jetzigen Verhalten haben naemlich viele Anfaenger Probleme), wenngleich es fuer die Leute, die dieses Verhalten kapiert haben, doch eine kleine Umstellung sein wird\n\n

<!--EDIT|Strat|1070459402-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Fehlermeldung: Frag zu einer Fehlermeldung