Wie kann ich eine Referenz Perl-hash in ein array in einen hash?

Dies ist der code-snippet, mit der ich arbeite:

my %photo_details = (
 'black_cat' => (
  ('size' => '1600x1200', 'position' => -25),
  ('size' => '1280x1024', 'position' =>  25),
  ('size' =>   '800x600', 'position' =>   0),
 ),
 'race_car' => (
  ('size' => '1600x1200', 'position' =>  10),
  ('size' =>   '800x600', 'position' =>   5),
 ),
);

my $photo = 'black_cat';

foreach my $photo_detail ($photo_details{$photo})
{
 my $size     = $photo_detail{'size'};
 my $position = $photo_detail{'position'};

 print ("size = $size, position = $position\n");
}

Was ich erwarte zu bekommen, ist:

grösse = 1600x1200, position = -25

size = 1280x1024, position = 25

size = 800x600, position = 0

Was ich bekomme ist:

Verwendung von nicht initialisierten Wert $Größe in concatenation (.) oder string an C:\Test.pl Zeile 23.

Verwendung von nicht initialisierten Wert von $position in concatenation (.) oder string an C:\Test.pl Zeile 23.

size = , position =

Die foreach-Anweisung ist eindeutig falsch, wie nicht nur gibt es keine Werte für $Größe und die $position, es hat nur vorbei durch die Schleife einmal statt dreimal. Ich habe versucht, alle möglichen Varianten der variable Präfixe und keine gefunden, die funktionieren.

Was mache ich falsch?

InformationsquelleAutor TallGuy | 2010-01-03

Schreibe einen Kommentar