steckl: "use of uninitialized value" Wie Array auffüllen?

Beitrag lesen

Hi,

Ich habe 2 Arrays, ein Array z.B. @test hat 20 Werte und @test2 hat 24 Werte! Die Werte können mal mehr, mal weniger sein.

Jetzt lasse ich beide Arrays in einer for-Schleife durchlaufen.

for ($i = 0; $i < @test2; $i++) {
print $test[$i] . " = " . $test2[$i];
}

Da natürlich @test2 mehr Werte hat wie @test kommt die Meldung "Use of uninitialized value". Wie kann ich dies umgehen? Muss ich immer überprüfen wieviele Werte ein Array hat und dieses dann mit einer Schleife auffüllen oder geht dies auch einfacher?

Du koenntest entweder vor der for-Schleife abpruefen, welche Liste laenger ist und die Schleife dann nur sooft durchlaufen lassen, bis das Ende der kuerzeren erreicht ist, oder du pruefst in der Schleife ab, ob $test[$i] definiert ist:

for (my $i = 0; $i < @test2; $i++)
{
    if (defined($test[$i]))
    {
        print "$test[$i]  =  $test2[$i]\n";
    }
    else
    {
        print "test[$i] ist nicht definiert\n";
    }
}

In diesem Beispiel macht es aber eigentlich keinen Sinn, die Schleife oefters durchlaufen zu lassen, als bis das Ende der kuerzeren Liste erreicht ist.

mfG,
steckl