Schrift
[thread]12197[/thread]

Anonymen Hash an Funktion übergeben



<< >> 3 Einträge, 1 Seite
tsy
 2008-07-17 18:02
#112257 #112257
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo!
Ich möchte gerne einer funktion ein anonymes Hash übergeben.
Ich habe einige Funktionen gesehen, welche ungefähr so aufgerufen werden:
Code (perl): (dl )
func($scalar, [{ 'foo' => 'bar', 'moo' => 'mar'}]); 

meine Frage wäre nun, wie man so etwas implementiert.
meine Versuche sehen bisher wie folgt aus:
Code (perl): (dl )
1
2
3
4
5
6
7
func( \{ 'foo' => 'bar', 'moo' => 'mar'});
# oder 
func( [{ 'foo' => 'bar', 'moo' => 'mar'}];
# und hier die Definition:
sub func {
my $referenzAufHash = shift;
... } 

Beides bringt aber nicht den gewünschten Erfolg. In letzterem Fall hatte ich in $referenzAufHash nur 'mar' stehen (wenn ich mich recht entsinne) und im ersten Fall habe ich $referenzAufHash als Typ REF(0x1fa79d8)->HASH(0x1fa78b8)=... mit dem ich so recht nichts anfangen kann.
Kann mir jemand erklärend unter die Arme greifen?

Gruß,

tsy
murphy
 2008-07-17 18:19
#112260 #112260
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
tsy+2008-07-17 16:02:18--
[...]
Code (perl): (dl )
func( \{ 'foo' => 'bar', 'moo' => 'mar'});

Hier übergibst Du eine Referenz auf eine Referenz auf einen Hash. Zugriff:
Code (perl): (dl )
1
2
3
4
sub func {
  my $r = shift;
  print ${$r}->{foo}; # sollte 'bar' ausgeben.
}


Quote
[...]
Code (perl): (dl )
func( [{ 'foo' => 'bar', 'moo' => 'mar'}];

Hier übergibst Du eine Referenz auf ein Array, welches eine Referenz auf einen Hash enthält. Zugriff:
Code (perl): (dl )
1
2
3
4
sub func {
  my $r = shift;
  print $r->[0]->{foo}; # sollte 'bar' ausgeben.
}


Ich würde aber eher vorschlagen
Code (perl): (dl )
func({foo => 'bar', moo => 'mar'});

zu schreiben, und dann per
Code (perl): (dl )
1
2
3
4
sub func {
  my $r = shift;
  print $r->{foo}; # sollte 'bar' ausgeben.
}

zuzugreifen.
When C++ is your hammer, every problem looks like your thumb.
tsy
 2008-07-17 18:31
#112263 #112263
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Ach so! Danke für die Erläuterung murphy. Jetzt blick ich durch :-)

Gruß,

tsy
<< >> 3 Einträge, 1 Seite



View all threads created 2008-07-17 18:02.