Thread Gültigkeit von Variablen... oder so etwas.
(30 answers)
Opened by theresa at 2008-02-18 13:44 Gast+2008-02-18 14:27:28-- Wollen würde ich das eigentlich öfters in jeder funktionalen Programmiersprache benutzt man verschachtelte Subroutinen alle Nase lang! In Perl würde ich es aber nicht tun weil hier meiner Meinung nach zwei fundamentale Designfehler in der Programmiersprache gemacht wurden: Zum einen sollte ein Ausbrechen nicht nur aus dem lexikalischen Namensraum sondern sogar aus dem dynamischen Namensraum, wie es bei benannten inneren Subroutinen passiert, eigentlich am besten überhaupt nicht möglich und wenn dann nicht das Standardverhalten sein. Und zum anderen fehlen die dringend nötigen Konstrukte my sub ... und local sub ... in der Sprache. Um zum Beispiel im OP zurückzukommen, könnte man das Problem aber auch wie folgt lösen, ohne local zu bemühen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my $zaehler = 0; bla(); sub bla{ my $var = $zaehler++; my $inbla = sub { if($var<2){ bla(); } } print "$var". "\n"; $inbla->(); } Oder mit einem etwas ungewöhnlicheren Einsatz von local: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my $zaehler = 0; bla(); sub bla{ my $var = $zaehler++; local *inbla = sub { if($var<2){ bla(); } } print "$var". "\n"; inbla(); } Edit: Oder man schreibt das ganze gleich in einer Programmiersprache die für solche Konstruktionen gedacht ist: ;-) When C++ is your hammer, every problem looks like your thumb.
|