in reply to Arbitrary Levels Of Recursion?

Here's one (pretty clunky, but serviceable) way:

use strict; my @who = ('Colonel Mustard', 'Miss Scarlet', 'Professor Plum'); my @where = ('library', 'billiard room', 'conservatory', 'kitchen'); my @how = ('lead pipe', 'wrench', 'candlestick', 'rope'); sub hunch { printf "%s in the %s with the %s\n", @_ } curse_again(\&hunch, [], \@who, \@where, \@how); sub curse_again { die "bad args\n" if @_ < 2; my $sub = shift; my $args = shift; return $sub->( @$args ) unless @_; my $list = shift; curse_again( $sub, [ @$args, $_ ], @_ ) for @$list; } __END__

the lowliest monk