use Sort::Key qw(nsortkey); my @vals = (3, 7, 5, 0, 2); my @idx = nkeysort { $vals[$_] } 0..$#vals;