Thread Unterprogramm überschreiben (7 answers)
Opened by marky at 2009-12-31 11:48

pq
 2009-12-31 14:21
#129878 #129878
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
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: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Unterprogramm überschreiben