use strict; use warnings; my @AoA = ( [0..13], [0..11], [0..11] ); fisher_yates_shuffle(@AoA); foreach ( @AoA ) { print join ",",@$_; print $/; } sub fisher_yates_shuffle { while (my $deck = shift ) { my $i = @$deck; while ($i--) { my $j = int rand ($i+1); @$deck[$i,$j] = @$deck[$j,$i]; } } } #### my @weeks = ('@week01','@week02','@week03'); for my $ref (@weeks) { for ($i = @$ref; --$i;) { my $r = int rand ($i+1); @$ref[$i, $r] = @$ref[$r, $i]; } } for(@weeks){ print; } #### my @week01 = (0..13); my @week02 = (0..11); my @week03 = (0..11); my @weeks_refs = (\@week01,\@week02,\@week03); for my $ref (@weeks_refs) { for ($i = @$ref; --$i;) { my $r = int rand ($i+1); @$ref[$i, $r] = @$ref[$r, $i]; } } for(@weeks_refs){ print join ",",@$_; print $/; } #### for my $array_ref (@weeks_arr){ print join "," ,@{$array_ref}; } #### for(@weeks_arr) { print join ",",@$_; print $/; }