sub naive_shuffle_traverse { my $i = shift; my $j = shift; my $n = my @p = @_; @p[ $i, $j ] = @p[ $j, $i ] if defined $j; # swap if ( ++$i < $n ) { for my $j (0..$n-1) { naive_shuffle_traverse( $i, $j, $tally, @p ); } } else { return; } }