Folgendes Code-Beispiel:
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__
Wie's aussieht leert es den Array, denn zuerst wird undef, dann die Elemente und dann () ausgegeben.
Ich hätte es genau umgekehrt erwartet.
Aber hat das nicht genau mit dem Thread "wie testen ob leeres array definiert wurde" ( oder so ähnlich ) zu tun?
MfG