in reply to hash ref package

May I recommend the Schwartzian transform for your sort? (it looks extremely inefficient.)

map { $_[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, grabdataentry(\%hash, $_, 0) ] } keys %hash;

Anyway, it may not be a problem if you have fewer than (let's say) fifty keys, but after that it'll take quite a bit of cpu. Oh, and please don't copy the hash in the subroutine either:

sub grabdataentry { my $href=shift; ... my @list=split /;/, $href->{$skey};

By copying the hash to %dhash you're saving two whole keystrokes.