Struppi: Funktion ausfuehren, deren Namen nur als Skalar bekannt

Beitrag lesen

ich moechte in Abhaengigkeit des Wertes eines Skalars eine Funktion ausfuehren lassen.

eval $scalar; funktioniert bei mir..

ist abe rnicht nötig.

Wenn du die entsprechende Funktion nur so (also "indirekt") aufrufst, empfehle ich dir aber was anderes:

my %subs;
$subs{'meine_sub'} = sub {
    print "test";
}; # Semikolon nicht vergessen

Das ist aber umständlicher als die Funktion ganz normal zu definieren und der Kontrollstruktur nur die Namen der Funktionen mitzugeben.

Ich benutze z.b. sowas:

ausgelagert in einer Datei Action.pm
my @action = (
{
name => 'bla',
function => 'func',
modul => 'datei'
},
{
name => 'bla',
function => 'func',
modul => 'datei'
}
);

und der aufruf mit dem Parameter Action:

my $action = $action[param('action')];

require $action->{modul} if(exists $action->{modul} && -e  $action->{modul}) ;
&{$action->{function}}() if(exists $action->{function} && defined $action->{function}) ;

Dadurch kann ich alles in einer Datei kontrollieren (es sind noch mehr informationen in @action drin, z.b. wie das Menü dargestellt wird)

Struppi.