User since
2003-08-15
2653
Artikel
BenutzerIn
Ich habe folgende konstellation:
my @args = ("name", [1,2,3,4]);
&func(\@args);
sub func {
my @refs = shift @_;
for (@$refs[1]) {
...
}
}
Ich möchte gerne in func() die arrayref aus @args ausgeben.\n\n
<!--EDIT|Froschpopo|1140785780-->
Antworten mit Zitat
User since
2003-08-15
2653
Artikel
BenutzerIn
Hey danke :)
gibt es noch eine andere schreibweise für (@{$ref->[1]}) ??
Mir ist mein Fehler noch nicht so ganz bewusst...
Antworten mit Zitat
User since
2003-08-15
2653
Artikel
BenutzerIn
besten dank euch allen.
Jetzt das ganze noch mit einem hash. Als Vorlage:
my @args = ("name", { key => "value" });
wie bekomme ich den jetzt in seine natürliche form so dass ich ihn bequem mit each usw ausgeben kann?
Beispiel für die ausgabe ist nicht notwendig. Möchte nur wissen wie ich ihn dereferenzieren kann.
Antworten mit Zitat
User since
2003-09-26
147
Artikel
BenutzerIn
So:
\n\n
<!--EDIT|frodus|1140790283-->
Antworten mit Zitat
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
[quote=Froschpopo,24.02.2006, 14:23]Mir ist mein Fehler noch nicht so ganz bewusst...[/quote]
Dein Uebergabeparameter ist eine(!) Arrayreferenz. Du weist diese in der sub mittels shift dem Array @refs zu. Das Array @refs enthaelt also genau ein Element.
Deine Konstruktion @$refs[1] ist aber identisch mit {@$refs}[1], bedeutet also: Nimm das zweite Element des Arrays, auf das die Referenz $refs verweist. Eine Referenz $refs gibt es aber gar nicht.
Die erste Frage waere also: Warum uebergibst du eine Arrayreferenz an die sub, weist diese aber einem Array zu?
Edit: Falsch dereferenziert. *g*\n\n
<!--EDIT|Dubu|1140790886-->
Antworten mit Zitat
User since
2003-08-15
2653
Artikel
BenutzerIn
[quote=frodus,24.02.2006, 15:10]So:
[/quote]
na das wusste ich auch schon ! aber wie bekomme ich den ganzen hash?
Antworten mit Zitat