Leser: 1
![]() |
|< 1 2 3 4 >| | ![]() |
33 Einträge, 4 Seiten |
renee+2008-03-14 15:42:35--Man bekommt mit der Zeit aber ein ziemlich gutes Gefühl dafür, was "wahr" und was "falsch" ist
renee+2008-03-14 15:44:51--QuoteDas ist ein echt nützliches Modul!Jetzt werde ich auch in Zukunft mehr den Befehl Data::Dumper benutzen, um in die Strukturen schauen zu können!
Dumper behandelt ein undefiniertes Array wie ein leeres Array statt sowas wie "undef" auszugeben.
undef @arr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl
# PRAGMAS
# -------
use strict;
use warnings 'all';
# FORWARD DECLARATIONS
# --------------------
sub show_arr (\@);
# MAIN
# ----
my @arr = (); # leeres array erzeigen
show_arr @arr; # ausgabe
@arr = qw( inhalt inhalt2 ); # array befuellen
show_arr @arr; # ausgabe
undef @arr; # array "undefinieren"
show_arr @arr; # ausgabe
<STDIN>;
# SUBROUTINES
# -----------
#
# NAME: show_arr()
#
# DESCRIPTION:
# Output the elements of an array.
# If the array is empty, '()' will get written, if it is undefined,
# 'undef' will get written.
#
# PARAMETERS: 1. Perl Array
#
# RETURNS: nothing
#
sub show_arr (\@)
{
my @arr = @{$_[0]}; # pick array
print "SHOW_ARRAY: ".
( @arr ? ('( '. join( ', ', @arr ) .' )') # show array data if there is any
: ( defined @arr ? '()' # show () if array is empty
: 'undef' # show undef if array is undef
)
) ."\n";
} # show_arr
__END__
Gast+2008-03-16 20:48:17--Aber hat das nicht genau mit dem Thread "wie testen ob leeres array definiert wurde" ( oder so ähnlich ) zu tun?
Gast+2008-03-16 20:48:17--Wie's aussieht leert es den Array, denn zuerst wird undef, dann die Elemente und dann () ausgegeben.
Ich hätte es genau umgekehrt erwartet.
my @arr = @{$_[0]}; # pick array
$arr = $_[0]; # pick array
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#!/usr/bin/perl # PRAGMAS # ------- use strict; use warnings 'all'; # FORWARD DECLARATIONS # -------------------- sub show_arr (\@); # MAIN # ---- my @arr = qw( inhalt inhalt2 ); # array befuellen show_arr @arr; #: SHOW_ARRAY: ( inhalt, inhalt2 ) @arr = (); # leeres array erzeigen show_arr @arr; #: SHOW_ARRAY: () undef @arr; # array "undefinieren" show_arr @arr; #: SHOW_ARRAY: undef <STDIN>; # SUBROUTINES # ----------- # # NAME: show_arr() # # DESCRIPTION: # Output the elements of an array. # If the array is empty, '()' will get written, if it is undefined, # 'undef' will get written. # # PARAMETERS: 1. Perl Array # # RETURNS: nothing # sub show_arr (\@) { my $arr = $_[0]; # pick array print "SHOW_ARRAY: ". ( @$arr ? ('( '. join( ', ', @$arr ) .' )') # show array data if there is any : ( defined @$arr ? '()' # show () if array is empty : 'undef' # show undef if array is undef ) ) ."\n"; } # show_arr __END__
KurtZ+2008-03-16 20:08:13--
QuoteWie's aussieht leert es den Array, denn zuerst wird undef, dann die Elemente und dann () ausgegeben. Ich hätte es genau umgekehrt erwartet.
1
2
defined(@array) is deprecated at ./array.pl line 44.
(Maybe you should just omit the defined()?)
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. You should instead use a simple test for size:
pq+2008-03-16 23:54:05--ich glaube, das haben wir genug durchgekaut, oder?
![]() |
|< 1 2 3 4 >| | ![]() |
33 Einträge, 4 Seiten |