Zitat von FehlermeldungWie behebe ich das Problem, gibt es eine elegantere Lösung?Code:use strict; my $var = "bp_lib"; &$var(); sub bp_lib { my $sig = shift; my $template = shift; require $sig->get_option("path"); }
Zitat von FehlermeldungWie behebe ich das Problem, gibt es eine elegantere Lösung?Code:use strict; my $var = "bp_lib"; &$var(); sub bp_lib { my $sig = shift; my $template = shift; require $sig->get_option("path"); }
Geändert von Rebell (23-08-2006 um 19:30 Uhr) Grund: gelöst
Noch ein Beispiel, aus einer Klasse herraus aufgerufen. Mit Namen funktionierts, aber nicht unter Verwendung einer Variable wie hier.
Code:# Funktioniert nicht my $func_name = "bp_lib"; main::$func_name($sig, $this); # Funktioniert main::bp_lib($sig, $this);
HI,
da macht Dir das 'use strict;' einen Strich durch die Rechnung...
Du kannst das umgehen, indem Du vor dem Funktionsrauf folgendes schreibst:
Code:#!/usr/bin/perl use strict; use warnings; ... no strict 'refs'; &$var(); #oder besser: $var->();
ICh habs mit Eval gemacht:
Code:eval("main::" . $func_name . "(\$sig, \$this)");
Lesezeichen