Thread Unterprogramm überschreiben
(7 answers)
Opened by marky at 2009-12-31 11:48
also generell bin ich hier genauso ratlos wie sidburn. das was du machen willst, erschliesst sich mir nicht ganz, und mit ausdrücken wie "irgendwo" wird das ganze nicht klarer.
du willst ein programm ja offensichtlich ändern. auf OOP umzusteigen heisst ja nicht, dass du komplett alles umstellen musst. das geht auch schrittweise. nennt sich refactoring. schön tests schreiben, und wenn dein programm jetzt schon modular aufgebaut ist, dann sollte das machbar sein. ich möchte dennoch kurz zeigen, wie man eine subroutine lokal überschreibt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 perl -wl sub foo { print "foo" } foo(); { no warnings "redefine"; local $main::{"foo"} = sub { print "bar"}; foo(); } foo(); __END__ foo bar foo die neue subroutine gilt hier also im gesamten block und in aufgerufenen subroutinen selbst. aber local() und seinen scope kennst du ja sicher. dennoch würde ich nicht zu sowas raten. damit machst du dein programm nur schwerer wartbar. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |