#!perl -l use strict; use warnings; use Algorithm::Permute; my $base = 3; my @chunks = map{ [/./g] } $ARGV[0]=~/\d{$base}/g; my $p = new Algorithm::Permute([0..$base-1]); while(my @res = $p->next) { print "(", @res, ") ", map { chr(64 + $base**2 * $res[$base-$$_[0]] + $base * $res[$base-$$_[1]] + $res[$base-$$_[2]]) } @chunks }