http://qs321.pair.com?node_id=253348

SparkeyG has asked for the wisdom of the Perl Monks concerning the following question:

I was looking for code to print all the combinations of a set taken two at a time. Looking here, I found code to print all the permutations of a list. I took that, bent it to my will, and came up with what's below.

It works as I want, I am just wondering if this could be done better or more efficently.
--SparkeyG

#!/usr/bin/perl my @list = (1 .. 5); my $take = 2; comb(\@list, $take, []); sub comb { my @items = @{ $_[0] }; my $group = $_[1]; my @list = @{ $_[2] }; unless ($group) { print "@list\n"; } else { my (@newitems,@newlist,$i); foreach $i (0 .. $#items) { @newlist = @list; push (@newlist, shift (@items)); @newitems = @items; comb([@newitems], $group - 1, [@newlist]); } } }