# untested sub naive_shuffle_rec { my $i = shift; my $n = my @p = @_; my $j = int rand $n; @p[ $i, $j ] = @p[ $j, $i ]; # swap return ++$i < $n ? naive_shuffle_rec( $i, @p ) : @p; }