I've been working on this all day. I based it on
this. It works:).
#!/usr/bin/perl
use strict;
use warnings;
my $length = 1;
my $max = 1;
my @strings;
for ( 1 .. $max ) {
push @strings, rand_nums($length);
}
print "@strings", "\n";
{
my %cache;
sub rand_nums {
my %local_cache;
my ($length) = 8;
my $lower = 4;
my $upper = 21;
my $serial = int( rand($upper - $lower) ) + $lower;
$local_cache{$serial} = 1;
for ( 2 .. $length ) {
my $num = int( rand($upper - $lower) ) + $lower;
redo if exists $local_cache{$num};
$local_cache{$num} = 1;
$serial .= "-$num";
}
rand_nums($length) if exists $cache{$serial};
$cache{$serial} = 1;
return $serial;
}
}