Thread string xy as a HASH ref while "strict refs" in use Problem (2 answers)
Opened by string_von_hash at 2010-11-16 17:33

#Kein Kommentar
 2010-11-16 17:53
#142790 #142790
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
Code: (dl )
my @monstros = ( %verde, %azul );


diese zeile ändert die beiden hashes in listen um, sodass @monstros nun key,value,key,value.. enthält.

das heißt die hash-struktur in @monstros bleibt nicht mehr erhalten, sondern wird umgewandelt, deshalb kannst du auch nicht mit FOO als schlüssel auf einen hash-wert zugreifen, weil er nicht mehr mit dem schlüssel verbunden ist.

eine lösung für dich sollten referenzen sein (ungetestet):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
use strict;
use warnings;
my %azul = (
    FOO => "azul foos secret",
    FII => "azul fiis secret",
    FAA => "azul faas secret"
);
my %verde = (
    FOO => "verde foos secret",
    BOO => "verde boos secret"
);
my @monstros = ( \%verde, \%azul );
print "monstros[0]{FOO}:\n\'" . $monstros[0]->{FOO} . "\'\n\n";
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind

View full thread string xy as a HASH ref while "strict refs" in use Problem