Thread Subroutine über Variable aufrufen (4 answers)
Opened by Kean at 2013-01-05 20:14

pq
 2013-01-05 20:27
#164669 #164669
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
grundsätzlich sollte man sowas möglichst mit dispatch-tabellen behandeln.
Code (perl): (dl )
1
2
3
4
5
6
7
my %table = (
    test => \&test,
    foo => \&foo,
    ...
);
my $var = "test";
$table{ $var }->($parameter);


das bewahrt vor fehlern.

wenn man weiss, was man tut:
Code (perl): (dl )
1
2
3
my $var = "test";
my $sub = \&{ $var };
$sub->($parameter);

das geht auch mit strict.

wenn man strict an der stelle deaktiviert, geht auch folgendes:
Code (perl): (dl )
1
2
3
4
5
no strict;
my $var = "test";
$var->($parameter);
# oder
&$var;


edit: bei den letztgenannten methoden kann im prinzip jede subroutine aufgerufen werden, auch aus anderen modulen. daher vorsicht, vor allem, wenn der string von aussen kommt! am besten eine dispatchtabelle benutzen.
Last edited: 2013-01-05 20:42:27 +0100 (CET)
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 Subroutine über Variable aufrufen