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

KurtZ
 2008-03-10 17:11
#106892 #106892
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-03-08 06:30:37--
Das kann schon interessant sein.
Beispiel:
...


dein Beispiel kann man folgendermaßen retten:

Code (perl): (dl )
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
  use strict;
#use Data::Dumper;

my @liste;

sub lade_liste {
  my $pfad=shift;
  my $liste_ar=shift;
  if(open (my $fh, '<', $pfad)) {
    @$liste_ar= ('dummy' );  # damit Speicher allokiert wird!
    @$liste_ar=<$fh>;
    close($fh);
  } 
  return (@$liste_ar);
}

lade_liste('Test.txt' => \@liste);


{no warnings;                # "defined is deprecated" ausschalten
    if(defined(@liste)) {
        if( @liste ) {       #  if (scalar @liste) ist redundant
            print @liste;
        }
        else { warn "Datei war leer, kann nicht weiter machen!" }
    }
    else { warn "Datei konnte nicht geladen werden ($!)" }
}


pq's Einwand bzgl Fehlermeldung stimmt zwar, aber es gibt genug denkbare Beispiele wo ein leeres aber definiertes Array sinnvoll wäre ohne das eine Fehlermeldung geworfen werden müsste.
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread wie testen ob leeres Array definiert wurde?