Thread Hash enthält einen Wert zuviel (2 answers)
Opened by panni at 2015-07-22 15:24

panni
 2015-07-22 15:24
#181644 #181644
User since
2012-02-15
23 articles
BenutzerIn
[default_avatar]
Hallo!

Ich habe eine weitere Frage zu Hashs.

Ich lese eine Datenbanktabelle aus und speichere die Werte in einem Array. Der Sql-Befehl liefert genau sechs Werte zurück.

Code (perl): (dl )
1
2
3
4
5
6
7
8
...
my $key = "allItems";
while (my($itemNum, $itemTitle) = $dbh->fetchrow_array()) {     
push(@aItems, {
   'itemNum' => $itemNum, 
   'itemName' => $itemTitle
  });
}


Danach füge ich dieses Array zu einem Hasheintrag zu
Code (perl): (dl )
$item{$key}{'itemList'} = \@aItems;


Der Effekt den ich jetzt habe, ist dass ich in dem Array @aItems sechs Werte habe, in $item{$key}{'itemList'} aber sieben Werte, einer davon ist "undef".

Ich habe mir mal rudimentär ausgeben lassen, was in @aItems und in $item{$key}{'itemList'} gespeichert ist.
Code (perl): (dl )
1
2
3
$item{$key}{'debugArray'} = join ("|", @auctionItems);
while( my @array=each($item{$key}{'itemList'} ))   { $item{$key}{'debugHash'} = $item{$key}{'debugHash'} ."|$array[0] -> $array[1]"; $array[0]=undef;$array[1]=undef  }         
}


und erhalte dann folgendes Ergebnis

Quote
'debugHash' => '|0 -> |1 -> HASH(0x24981a0)|2 -> HASH(0x2497be8)|3 -> HASH(0x249def0)|4 -> HASH(0x1d23188)|5 -> HASH(0x24982f0)|6 -> HASH(0x24983c8)',
'debugArray' => '|HASH(0x24981a0)|HASH(0x2497be8)|HASH(0x249def0)|HASH(0x1d23188)|HASH(0x24982f0)|HASH(0x24983c8)'


Ich verstehe nicht, warum in "$item{$key}{'itemList'}" auf einmal ein Wert mehr enthalten ist bzw. wo der herkommt bzw. wo ich einen Fehler mache.

Ganz verrückt wird es (für mich), dass ich das Zuweisen einer Liste von Items zu einem Hashwert noch an anderen Stellen im Projekt auf die gleiche Weise mache, ich dann aber dort nicht diesen zusätzlichen, undefinierten, Wert mit in der Liste habe.

Weiß evtl. jemand Rat?

Danke!

View full thread Hash enthält einen Wert zuviel