#!/usr/bin/perl #program to generate 6 Million unique codes, Oct 15, 2011. use strict; use warnings; my $codes_filename = shift || "codesSixMil2.txt"; my $desiredQuantity = shift || 6_000_001; my $code_length = shift || 10; my @code_set = ('a'..'z', 3,4,6,7,9); sub generate_random_string { my $stringsize = shift; return join '', map { $code_set[rand@code_set] } (1..$stringsize); } my %unique_codes; while ( scalar keys %unique_codes < $desiredQuantity ) { $unique_codes{ generate_random_string( $code_length ) }++; } my $unique_codes_count = scalar keys %unique_codes; die "Mismatch: Codes generated: $unique_codes_count, but wanted $desiredQuantity!" if $unique_codes_count != $desiredQuantity; open( MYOUTFILE, '>', $codes_filename ) or die "cannot open $codes_filename - $!"; for my $code ( keys %unique_codes ) { print MYOUTFILE $code, "\r\n"; } close(MYOUTFILE); print "Unique codes (size=$code_length) written to '$codes_filename': $unique_codes_count\n";