That is a Fisher-Yates shuffle. However, you are relying on
the fact the indices on the RHS of the assignment are evaluated
before the indices on the LHS. Something that might have worked
for every version of Perl, but I don't think it's documented
that the behaviour is garanteed.