在perl中组合匿名函数

在perl中组合匿名函数,perl,Perl,注意,我不想做&$anon1 |&$anon2。我试图创建一个函数,它是$anon1和$anon2的组合。这些函数不是静态的 如果我可以进一步强化这个问题:如果ANON函数的数量是可变的,例如存储在哈希表中,那么anon3如何作为键的函数动态形成 $anon3 = $anon1 || $anon2; # N.B. not expecting this to work but is to suggest that want a function that if $anon1 is 0 then a

注意,我不想做&$anon1 |&$anon2。我试图创建一个函数,它是$anon1和$anon2的组合。这些函数不是静态的

如果我可以进一步强化这个问题:如果ANON函数的数量是可变的,例如存储在哈希表中,那么anon3如何作为键的函数动态形成

$anon3 = $anon1 || $anon2; # N.B. not expecting this to work but is to suggest that want a function that if $anon1 is 0 then assign to $anon2

创建一个新的匿名函数,该函数调用您要组合的两个函数,例如

$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };

我增强了原始问题,询问如何通过编程生成答案。
%anon = (
    'anon1' => sub { return ( $n < 10 ? 1 : 0 ) },
    'anon2' => sub { return ( $n < 20 ? 2 : 0 ) },
#and this may extend to N entries
    'anonN' => sub { return ( 999 ) },
); # the anonymous functions anonX are purely for example.
$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };
my $anon3 = sub { $anon1->() || $anon2->() };