grundsätzlich sollte man sowas möglichst mit dispatch-tabellen behandeln.
my %table = (
test => \&test,
foo => \&foo,
...
);
my $var = "test";
$table{ $var }->($parameter);
das bewahrt vor fehlern.
wenn man weiss, was man tut:
my $var = "test";
my $sub = \&{ $var };
$sub->($parameter);
das geht auch mit strict.
wenn man strict an der stelle deaktiviert, geht auch folgendes:
no strict;
my $var = "test";
$var->($parameter);
&$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)