Thread Routinen erzeugen (18 answers)
Opened by bloonix at 2007-01-30 16:53

bloonix
 2007-02-02 15:51
#73856 #73856
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Strat,02.02.2007, 11:23]Die Liste der Subroutinen wuerde ich allerdings in ein Array (oder sogar in eine Config) auslagern, weil es dann bei Erweiterungen einfacher handelbar wird.[/quote]
Das ist eine gute Idee und ich habe es auch mal probiert. Zunächst aller-
dings mit :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package BeginTest;

use strict;
use warnings;

my @ROUTINES = qw(echo);

BEGIN {
  for my $sub (@ROUTINES) {
     no strict 'refs';
     *{"$sub"} = sub { shift if $_[0] eq __PACKAGE__; print $_[0]; };
  }
}

1;


Das hat natürlich nicht geklappt, da der BEGIN-Block vorher verarbeitet
wird. Was mich nur stutzig macht ist, dass ich keine Fehlermeldung
erhalten habe, dass @ROUTINES nicht existiert.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package BeginTest;

use strict;
use warnings;

use constant ROUTINES => qw(echo);

BEGIN {
   for my $sub (ROUTINES) {
     no strict 'refs';
     *{"$sub"} = sub { shift if $_[0] eq __PACKAGE__; print $_[0]; };
  }
}

1;


Das hat geklappt. Heißt das, dass use-Anweisungen vor BEGIN verarbeitet
werden?

Das Skript...
Code: (dl )
1
2
3
4
5
6
use strict;
use warnings;
use lib '.';
use BeginTest;

BeginTest->echo("Hello World!\n");
\n\n

<!--EDIT|opi|1170424846-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Routinen erzeugen