I know this has almost been covered in other questions, but not quite.
Here's the scenario. I have a perl program that runs a large LED screen. The program has an "idle loop", where I want it to choose a random function from a list of internal functions.
Ideally, I'd define an array with the names of the routines that can be used, build a hash by name of their references, and call one at random.
Of course I use 'strict' and 'warnings'. I'm willing to disable 'strict' locally for this one routine to build the hash. I am not worried about external subversion calling unintentional code as it's governed by an array that's hard-coded in the script.
Here's a sample of what I'm trying, but can't seem to get it to work. Anyone able to help?
use strict; + use warnings; + use Data::Dumper; + my @FuncList = qw(TestSub1 TestSub2); my %JumpTbl; foreach (@FuncList) { print "\$_=$_\n"; no strict 'refs'; $JumpTbl{$_} = \$_; } print Dumper(%JumpTbl); $JumpTbl{'TestSub2'}(); exit; sub TestSub1 { print "TestSub1\n"; } sub TestSub2 { print "TestSub2\n"; }
Output:
$_=TestSub1 $_=TestSub2 $VAR1 = 'TestSub1'; $VAR2 = \'TestSub1'; $VAR3 = 'TestSub2'; $VAR4 = \'TestSub2'; Not a CODE reference at ./triv.pl line 22.
In reply to Calling func named in string by MikeL
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |