use strict; use warnings; my @a = 'A' .. 'E'; use Data::PowerSet 'powerset'; my $sets = powerset({ min => 3 }, @a); foreach my $b (@$sets) { print join('', @{$b}); } __END__ ABCDE * BCDE * ACDE CDE * ABDE BDE ADE ABCE BCE ACE ABE ABCD * BCD * ACD ABD ABC *