MikeL has asked for the wisdom of the Perl Monks concerning the following question:
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.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Calling func named in string
by choroba (Cardinal) on Dec 15, 2024 at 19:48 UTC | |
by MikeL (Acolyte) on Dec 16, 2024 at 19:41 UTC | |
Re: Calling func named in string
by tybalt89 (Monsignor) on Dec 15, 2024 at 23:18 UTC | |
by tybalt89 (Monsignor) on Dec 15, 2024 at 23:29 UTC | |
Re: Calling func named in string
by tybalt89 (Monsignor) on Dec 18, 2024 at 03:21 UTC | |
by LanX (Saint) on Dec 18, 2024 at 07:38 UTC | |
Re: Calling func named in string
by MikeL (Acolyte) on Dec 15, 2024 at 19:50 UTC | |
by GrandFather (Saint) on Dec 15, 2024 at 20:29 UTC | |
by MikeL (Acolyte) on Dec 16, 2024 at 19:29 UTC | |
by GrandFather (Saint) on Dec 16, 2024 at 22:32 UTC |