use strict; use warnings; my @array = (1..9); sub derange { use List::Util 'shuffle'; my @list = shuffle @_; my %map = map {($list[$_-1] => $list[$_])} 0..$#list; print "@map{@_}\n"; } print "@array\n"; derange(@array) for 1..15;