my $ref = \@list; for (my $i = @$ref; --$i; ) { my $j = int rand ($i+1); next if $i == $j; @$ref[$i,$j] = @$ref[$j,$i]; } # @list is modified in place #### for (my $i = scalar(@list); --$i; ) { my $j = int rand ($i+1); next if $i == $j; @list[$i,$j] = @list[$j,$i]; }