Thread wie testen ob leeres Array definiert wurde?
(36 answers)
Opened by KurtZ at 2008-03-06 23:58
Also laut meinem Test kommt es aufs gleiche Raus:
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 #!/usr/bin/perl -w use strict; my @liste; @liste = lade_liste($ARGV[0]); if(defined($liste[0])) { if(scalar(@liste)) { print "mach was\n"; } else { warn "Datei war leer, kann nicht weiter machen!" } } else { warn "Datei konnte nicht geladen werden ($!)" } sub lade_liste { my $pfad = shift; my @l; if (open my $fh, '<', $pfad) { @l=<$fh>; close $fh; } return @l; } Und hier 2 Aufrufe + Ausgabe, "test.txt" (leere Datei) gibt es, "test 2.txt" nicht: Code: (dl
)
1 community$ perl defined_array.pl test.txt Theoretischerweise haette der Interpreter ja den else-zweig ausfuehren muessen und "Datei war leer, kann nicht weiter machen!" ausgeben muessen... Also scheint defined lediglich zu pruefen, ob ein Skalar Daten enthaelt oder nicht, und damit ist dann ein if(scalar @array) sozusagen das defined unter den Arrays. Moege man mich verbessern =) edit: thema leicht verfehlt Pörl.
|