#!/usr/bin/perl use strict; use warnings; use Algorithm::Combinatorics qw(variations_with_repetition); my @data = qw(a b c); my $iter = variations_with_repetition( \@data, $#data ); while ( my $c = $iter->next ) { print @$c, "\n"; } __END__ Output: aa ab ac ba bb bc ca cb cc