my $i = $#{$before}; my %before = map { $before->[$_] => $_ } (0..$i); my %after = map { $after->[$_] => $_ } (0..$i); for (0..$i) { print "$before->[$_] has moved from $before{$before->[$_]} to $after{$before->[$_]}\n" if $before{$before->[$_]} != $after{$before->[$_]}; } #output: #1 has moved from 0 to 4 #2 has moved from 1 to 0 #3 has moved from 2 to 1 #4 has moved from 3 to 2 #5 has moved from 4 to 3