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

Linuxer
 2015-07-22 17:18
#181645 #181645
User since
2006-01-27
3677 articles
HausmeisterIn

user image
Du arbeitest einmal mit @aitems (1. und 2. Code) und machst die Kontrolle mit @auctionItems (3. Code).
Dann sind in den beiden Arrays möglicherweise verschiedene Inhalte.

Aber andererseits:

Mit
Code (perl): (dl )
$item{$key}{'debugArray'} = join ("|", @auctionItems);


bekommst Du ja diese Ausgabe:

Code: (dl )
 'debugArray' => '|HASH(0x24981a0)|HASH(0x2497be8)|HASH(0x249def0)|HASH(0x1d23188)|HASH(0x24982f0)|HASH(0x24983c8)'


Daran ist am Anfang des Strings zu sehen, dass im Array entweder ein Leerstring '' oder undef steckt.
Ansonsten ist es nicht erklärbar, dass beim  join('|', @array);  gleich zu Beginn das Trennzeichen '|' steht.

Code (perl): (dl )
1
2
3
join( '|', 1,2,3 );     # produces "1|2|3"
join( '|', "",4,5 );    # produces "|4|5"
join( '|', undef,6,7 ); # produces "|6|7"; giving warning if enabled



Ich hoffe, Du benutzt use strict; und use warnings;.

Wie werden denn diese Arrays (@aItems, @auctionItems) in diesem Code deklariert und initialisiert?

Oder machst Du vielleicht irgendwo @aItems = (undef);, um das Array zu leeren?

Dann sollte es klar sein; denn Du weist dem Array hier eine Liste mit einem Element zu. Und dieses Element ist eben undef, dass dann natürlich im Array steckt...

Wenn Du ein Array leeren willst, verwende @array = (); oder auch undef @array;.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Hash enthält einen Wert zuviel