Thread Array Prüfung (4 answers)
Opened by jan10001 at 2003-10-13 18:59

DS
 2003-10-13 20:15
#62857 #62857
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,13.10.2003, 16:59]Wenn man überprüfen will ob ein Array gefüllt ist, kann man das dann so schreiben?

Code: (dl )
1
2
3
if ( defined @test ) {
Array ist gefüllt;
}
[/quote]
Ich hab noch nie getestet, was passiert, wenn man einen Array mit defined testet, also hab' ich das mal nachgeholt... und das Ergebnis war durchaus abweichend von dem was ich erwartet hätte:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
print 1 if defined @array;
my @array;
print 2 if defined @array;
@array = ();
print 3 if defined @array;
@array = (0);
print 4 if defined @array;
@array = (1);
print 5 if defined @array;
@array = ();
print 6 if defined @array;
undef @array;
print 7 if defined @array;

Ausgabe:

Quote
456

Irgendwo hab ich mal gehört, daß erst mit undef der Speicher, den sich der Array im Laufe seines Lebens reserviert hat, wieder freigegeben wird. Genau das scheint defined hier zu berücksichtigen... solange der Array "Platz braucht", ist er definiert...

Zur Info: Windows XP mit ActivePerl 5.8

Also ich würd's nen Bug nennen... ;) (entweder in meinem Hirn oder in Perl)

View full thread Array Prüfung