use strict; use warnings; use Data::Dumper; my @unsortiert = ( { name => 'alpha', test => 'I', }, { name => 'beta', test => 'II', }, { name => 'gamma', test => 'III', }, ); # anstatt nun den Hashes aus @unsortiert die Sort-Keys zu berechnen # und im jeweiligen Hash zu speichern, speicherst du die Sort-Keys in # einem Array. my @sortValues = (2, 1, 3); # Das Ursprungsarray bleibt unverändert, wir sortieren nur ein neues # Array, das mir die Indizes sortiert. my @sortIdx = sort { $sortValues[$a] <=> $sortValues[$b] } (0..$#unsortiert); for (@sortIdx) { print Dumper $unsortiert[$_] }