note
kcott
<p>G'day [id://11113902|feumw],</p>
<p>
With some realistic, example values for <c>$sFunction</c>, I may have provided a slightly different solution; however,
in general, I'd probably tackle this with a dispatch table.
Here's some example code showing the technique.
</p>
<code>
#!/usr/bin/env perl
use strict;
use warnings;
my %action_for;
%action_for = (
test1 => sub {
my ($input) = @_;
print "*** Input: $input\n";
print "Test 1 code\n"
},
test2 => sub {
my ($input) = @_;
$action_for{test1}->($input);
print "Test 2 code\n";
},
);
my @tests = qw{
test1 test2 Atest1 test2B XYZ
test1C test2D Etest1F Gtest2H
};
/(test\d)/ && $action_for{$1}->($_) for @tests;
</code>
<p>Output:</p>
<code>
*** Input: test1
Test 1 code
*** Input: test2
Test 1 code
Test 2 code
*** Input: Atest1
Test 1 code
*** Input: test2B
Test 1 code
Test 2 code
*** Input: test1C
Test 1 code
*** Input: test2D
Test 1 code
Test 2 code
*** Input: Etest1F
Test 1 code
*** Input: Gtest2H
Test 1 code
Test 2 code
</code>
<p></p>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-861371">
<p>— Ken</p>
</div></div>
11144894
11144894