Thread wie testen ob leeres Array definiert wurde? (36 answers)
Opened by KurtZ at 2008-03-06 23:58

KurtZ
 2008-03-07 00:41
#106767 #106767
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
AHA!

AFAIS gibts ganz subtile Unterschiede zw. undef @arr und @arr=()

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use Data::Dumper;
$\="\n";

my @arr;
@arr=('dummy'); 

@arr=();
if  ( defined @arr ) {
        print "Array wurde definiert \t",Dumper \@arr 
}

undef @arr;
unless  ( defined @arr ) {
        print "Array wurde nicht definiert \t",Dumper \@arr 
}


kommentiert man Zeile 6 aus wird nur noch das unless ausgeführt...

Ergo... wenn ich will das ein leeres Array als definiert gilt muss ich sicherstellen das Speicher allokiert wurde!

Sorry, das hört sich vielleicht sehr theoretisch an, aber ich wette, wegen sowas kann man sich in den Wahnsinn debuggen!

EDIT...NACHTRAG:
defined(@array) is deprecated at /tmp/tst.pl line 11.
(Maybe you should just omit the defined()?)
defined(@array) is deprecated at /tmp/tst.pl line 16.
(Maybe you should just omit the defined()?)


desweiteren:
Use of "defined" on aggregates (hashes and arrays) is deprecated. It used to
report whether memory for that aggregate has ever been allocated. This behavior
may disappear in future versions of Perl


...na super
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread wie testen ob leeres Array definiert wurde?