sub count { my( $alphabet, $seq )= @_; my $base= length($alphabet); my $pos= 0; my $val; while( $base <= ( $val= 1 + index( $alphabet, substr($seq,$pos,1) ) ) ) { substr( $seq, $pos, 1 )= substr( $alphabet, 0, 1 ); return if length($seq) <= ++$pos; } substr( $seq, $pos, 1 )= substr( $alphabet, $val, 1 ); return $seq; } my( $len, $alphabet )= @ARGV; my $seq= substr($alphabet,0,1) x $len; do { print $seq, $/; } while( $seq= count( $alphabet, $seq ) );