Thread wie testen ob leeres Array definiert wurde?
(36 answers)
Opened by KurtZ at 2008-03-06 23:58 Gast+2008-03-08 05:55:58-- leider nicht ganz, weil Perl wie gesagt auch noch für ein leeres Array keinen Speicher anlegt, aber mit Code: (dl
)
1 my @array; #undefiniertes array kannst du den Unterschied mit defined abfragen. Obige Schreibweise könnte ich auch noch akzeptieren, aber mich mit den ständigen Warnings das defined @arr deprecated ist, hätte ich schwierigkeiten. das ist unorthogonal, wozu gibts ein undef @arr wenns kein defined @arr geben darf (deprecated)? Gast+2008-03-08 06:30:37-- glaube nicht dass das so klappt, @liste bleibt ja auch undefined wenn das Return eine leere Liste ist. 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 use strict; use Data::Dumper; my @arr; sub undef_arr { my @arr; return @arr; } sub empty_arr { my @arr=(""); @arr=(); return @arr; } @arr=undef_arr(); print "defined" if (defined @arr); #: nicht defined print Dumper \@arr; @arr=empty_arr(); print "defined" if (defined @arr); #: nicht defined print Dumper \@arr pq hat schon recht dass du in Perl eh meistens auf Refs ausweichen musst !!! pq+2008-03-08 13:20:45-- da geb ich dir (leider) voll recht, ich bin sogar soweit zu glauben mann solle grundsätzlich mit Arr_refs und Hash_refs arbeiten und den Editor so konfigurieren dass er defaultmäßig ein @ sofort zu @$ expandiert. pq+2008-03-08 13:20:45-- Hmm ... es gibt ein englisches Zitat das ich leider nicht mehr googeln kann, da heißt es emacs und perl-experten haben eine große Gemeinsamkeit, wenn sie sich erstmal mühsam eingearbeitet haben, dann geht ihnen das Verständnis für Anfängerprobleme flöten. IMHO birgt jede Unorthogonalität den Samen zu unendlichem Ärger. Die organische Wachstumsgeschichte von Perl bringt auch viele Vorteile, wie z.B. das riesige CPAN, das will ich hier auch nicht abstreiten. Mein Anliegen ist mir ein stylistisches "rechtwinkliges Koordinatensystem" für dieses Gebäudesystem zurechtzulegen, sodass ich schnell durch die vielen angebauten inhomogenen Räume navigieren kann ohne mir eine Latte von zu meidenden Sonderfällen merken zu müssen (diese Tür ist tiefer also ducken, jener Boden glitschig also Schuhe wechseln usw) Hört mal, was ich nur zu verstehen versuche ist: wieso ist defined @array deprecated??? PS: cut&paste zw. firefox und emacs frißt Umlaute, sorry! EDIT hab jetzt mal händisch sonderzeichen eingefügt. TMTOWTDYOG (there's more than one way to dig your own grave)
|