#!/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]); } } }