Archiv verlassen und diese Seite im Standarddesign anzeigen : [Perl] Can't use string as a subroutine
Can't use string ("bp_lib") as a subroutine ref while "strict refs" in use at test.pl line 10.
use strict;
my $var = "bp_lib";
&$var();
sub bp_lib {
my $sig = shift;
my $template = shift;
require $sig->get_option("path");
}
Wie behebe ich das Problem, gibt es eine elegantere Lösung?
Noch ein Beispiel, aus einer Klasse herraus aufgerufen. Mit Namen funktionierts, aber nicht unter Verwendung einer Variable wie hier.
# Funktioniert nicht
my $func_name = "bp_lib";
main::$func_name($sig, $this);
# Funktioniert
main::bp_lib($sig, $this);
michael.sprick
23-08-2006, 09:29
HI,
da macht Dir das 'use strict;' einen Strich durch die Rechnung...
Du kannst das umgehen, indem Du vor dem Funktionsrauf folgendes schreibst:
#!/usr/bin/perl
use strict;
use warnings;
...
no strict 'refs';
&$var();
#oder besser:
$var->();
ICh habs mit Eval gemacht:
eval("main::" . $func_name . "(\$sig, \$this)");
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.