#! perl -slw use strict; while( 1 ) { my @t1 = map{ "T1/$_" } 1 .. 7; my @t2 = map{ "T2/$_" } 1 .. 7; my @seq = map{ shift @{ ( ( rand() < .5 ) and @t1 ) ? \@t1 : \@t2 } } 1 .. @t1 + @t2; print @seq . " :@seq"; ; } __END__ P:\test>junk.pl 14 :T2/1 T2/2 T1/1 T1/2 T1/3 T2/3 T2/4 T1/4 T2/5 T2/6 T1/5 T2/7 T1/6 T1/7 Use of uninitialized value in join or string at P:\test\junk.pl line 10, line 1. 14 :T2/1 T1/1 T1/2 T1/3 T1/4 T2/2 T2/3 T2/4 T1/5 T2/5 T1/6 T2/6 T2/7 14 :T1/1 T1/2 T1/3 T1/4 T1/5 T1/6 T2/1 T2/2 T1/7 T2/3 T2/4 T2/5 T2/6 T2/7 14 :T1/1 T1/2 T1/3 T1/4 T2/1 T1/5 T1/6 T1/7 T2/2 T2/3 T2/4 T2/5 T2/6 T2/7 Use of uninitialized value in join or string at P:\test\junk.pl line 10, line 4. 14 :T1/1 T2/1 T1/2 T1/3 T2/2 T2/3 T1/4 T2/4 T2/5 T2/6 T1/5 T1/6 T2/7 Terminating on signal SIGINT(2)