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
$item{$key}{'debugArray'} = join ("|", @auctionItems);
bekommst Du ja diese Ausgabe:
'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.
join( '|', 1,2,3 );
join( '|', "",4,5 );
join( '|', undef,6,7 );
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!