#!/usr/bin/perl use strict; use warnings; use Algorithm::Permute; my $p = Algorithm::Permute->new(['a','b','c','d','e'], 3); my @results; while (my @res = $p->next) { push @results, [sort @res]; # use a different sort for numbers } my %seen; @results = grep{!$seen{"@$_"}++ }@results; # remove duplicates! print join ("+",@$_)."\n" for @results;