#! perl -slw use strict; use List::Util qw[ shuffle ]; our $N ||= 20e6; my @tagStems = shuffle 'AAA' .. 'ZZZ'; my $serial = 0; while( my $stem = pop @tagStems ) { for my $suffix ( shuffle 'AAA' .. 'ZZZ' ) { printf "%07d\t%s\n", ++$serial, $stem . $suffix; exit if $serial > $N; }; } __END__ C:\test>786833 0000001 HBDKCE 0000002 HBDBWB 0000003 HBDRRX 0000004 HBDUJF 0000005 HBDFRH 0000006 HBDMFO 0000007 HBDAEO 0000008 HBDEYC 0000009 HBDCCZ 0000010 HBDXPK ... 0017572 HBDIWS 0017573 HBDQFL 0017574 HBDHYU 0017575 HBDUUL 0017576 HBDCGM 0017577 ZPSQVM 0017578 ZPSOUH 0017579 ZPSPJV 0017580 ZPSGAS ...