Thread Hash in Sub dereferenzieren (18 answers)
Opened by Opaxtl at 2007-04-19 16:24

sid burn
 2007-04-20 17:27
#76053 #76053
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=Opaxtl,19.April.2007, 15:28]Also hat im Grunde nur das @_ hinter shift gefehlt? Na gut.[/quote]
Nein,
wenn du lediglich folgendes Schreibst:

Code: (dl )
my %hash = %{shift};


Dann versuchst er %shift nach %hash zu Kopieren! %shift gibt es aber bei dir nicht. Ohne "use strict;" wird dann an der Stelle einfach eine neue leere Package variable %shift angelegt die dann nach %hash kopiert wird.


Das was du aber möchtest ist, das "shift" innerhalb der Klammern nicht als Variablennamen angesehen wird, sondern Code ist der Ausgeführt werden soll.

Um das zu verdeutlichen reicht aber auch schon ein '+' Zeichen davor.

Code: (dl )
my %hash = %{+shift};


Variablen kann man halt wie gesagt immer durch Zusätzliche geschweifte Klammern angeben.

Code: (dl )
1
2
3
4
5
6
#!/usr/bin/perl
use strict;
use warnings;

my ${variable} = "Motor";
print "${variable}rad\n"


Genau so funktioniert ja auch das Derefernzieren...\n\n

<!--EDIT|sid burn|1177075695-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Hash in Sub dereferenzieren