Thread Code, der Code erzeugt und verwendet: geht das? (15 answers)
Opened by Crian at 2003-08-18 15:26

Strat
 2003-08-18 19:29
#61758 #61758
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
hier einíge weitere Moeglichkeiten:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub CreateFunction {
  my (&#36package, &#36functionName, @params, ...) = @_;
 
  no strict 'refs';
  *{&#36package . '::' . &#36functionName } = 
  sub {
    # content of sub, e.g.
    my @params = @_;
    print "Sub called with @params\n";
  }
  use strict 'refs'; # optional, wenn am blockende
  
} # CreateFunction

&CreateFunction('A', 'PrintIrgendwas');
&A::PrintIrgendwas(20, 30, 40);


oder auch ueber AUTOLOAD (schwierig, meistens ist wohl die obige Loesung besser):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub AUTOLOAD {
  my (&#36self, @params) = @_;
  if (my (&#36subName) = &#36AUTOLOAD =~ /.*::([^:])+&#36) {
    print "Building sub &#36subName\n";

    no strict 'refs';
    *{&#36AUTOLOAD} = 
     sub { 
       my @params = @_;
       print "Sub: @params\n";
     };
    goto &#36self->&#36subName(@params);
} # AUTOLOAD


oder die IMHO beste moeglichkeit:
Du baust einen Hash, dessen Schluessel die Namen und dessen Werte Referenzen auf Subs sind, und rufst die Funktion dann ueber den Hash auf...


und jetzt sage bitte, dass er zum Problem passt :-))

ich weiss nicht, ob der Code so laeuft, habe ihn nicht getestet....\n\n

<!--EDIT|Strat|1061220646-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Code, der Code erzeugt und verwendet: geht das?