sub shuffle { my $array_ref = shift; for ( my $i = @$array_ref; --$i; ) { my $r = int rand ( $i + 1 ); @$array_ref[ $i, $r ] = @$array_ref[ $r, $i ]; } } #### sub recursive_shuffle { my $array_ref = shift; for my $element ( @$array_ref ) { recursive_shuffle( $sub_array ) if ref $element eq 'ARRAY'; } shuffle( $sub_array ); }