sub comb { my $s = shift; if (@_ == 1) { print "$s$_\n" for @{$_[0]}; return; } comb("$s$_",@_) for @{shift()}; } comb '',[qw(a b c)],[qw(1 2 3)],[qw(- + *)]; #### if (@_ == 1) { dowhatever("$s$_") for @{$_[0]}; return; }