Thread variable sub auf Tk button
(4 answers)
Opened by Kalle at 2009-08-28 00:47
Lesestoff: http://perldoc.perl.org/perlref.html#Using-Referen...
Code (perl): (dl
)
1 2 3 4 5 6 7 8 create_input_window('Test1',\&testsub1); #übergebe Referenz eines benannten Subs create_input_window('Test2',\&testsub2); #... # my $subtoexecute = sub{testsub1($mw_edit->get('1.0', 'end'))}; # <-- wie # kann man hier testsub1 durch die Variable $thissub ersetzen ? my $subtoexecute = sub{ $thissub->($mw_edit->get('1.0', 'end') ) }; die Frage ist ob du die Subs überhaupt extra benennen musst oder nicht gleich unbenannt auf Scalare legst, also mit einer Dispatchtable würdest du dann den Schritt vom Scalar zum Hashelement machen, was bei vielen "gleichartigen" Subs Sinn ergibt! oder auch äquivalent UPDATE: denn mit einer dispatchtable kannst du jetzt hergehen und statt eines coderefs wieder nur einen String resp. Key an create_input_window() übergeben und dort wird intern %table ausgelesen Code (perl): (dl
)
1 2 3 create_input_window('Test1','testsub1'); #... my $subtoexecute = sub{ $table{$thissub}->($mw_edit->get('1.0', 'end') ) }; die Frage ist dann nämlich ob es nicht einfach reicht nur den Titel als Key zu nehmen: Code (perl): (dl
)
1 2 3 4 5 6 my $table{Test1}=sub {...}; create_input_window('Test1'); #... my $subtoexecute = sub{ $table{$title}->($mw_edit->get('1.0', 'end') ) }; ... noch schlanker und eleganter gehts dann kaum noch! 8) PS: Wenn ich jetzt einen Post-Titel setzen könnte wärs "Ode an die Dispatchtabelle" ;-) Last edited: 2009-08-28 02:14:38 +0200 (CEST) me and my writeups
|