my $rcDefault = makeSorter($rhDataStruct); my @sortedKeys = $rcDefault->(); printData(q{First default sort}); $rhDataStruct->{THIS_IS_A_NEW_ITEM} = {Total => 7, Value => 3.209}; @sortedKeys = $rcDefault->(); printData(q{Second default sort}); my $rcByValue = makeSorter($rhDataStruct, q{v}); @sortedKeys = $rcByValue->(); printData(q{First by Value sort}); $rhDataStruct->{ANOTHER_NEW_ITEM} = {Total => 13, Value => 2.873}; my $rcByTotal = makeSorter($rhDataStruct, q{t}); @sortedKeys = $rcByTotal->(); printData(q{First by Total sort}); @sortedKeys = $rcByValue->(); printData(q{Second by Value sort}); @sortedKeys = $rcDefault->(); printData(q{Third default sort}); sub printData { my $title = shift; print qq{\n$title\n}; for my $key (@sortedKeys) { print qq{$key\n}, qq{ Total - $rhDataStruct->{$key}->{Total}\n}, qq{ Value - $rhDataStruct->{$key}->{Value}\n}; } }