perl -MData::PowerSet -le 'my $p = Data::PowerSet->new(qw(A B C D E)); print "@$_" while $_= $p->next' # produces : A B C D E B C D E A C D E C D E A B D E B D E A D E D E A B C E B C E A C E C E A B E B E A E E A B C D B C D A C D C D A B D B D A D D A B C B C A C C A B B A