in reply to Help with sort....

It is highly recommended that you use a module such as Text::xSV or Text::CSV to read CSV files. They are much tricker than they seem! If the file is very large you might think about using DBI and DBD::CSV to treat the file as a database.

Note that:

my %thisrecord = map { $columns[$_] => $fields[$_] } ( 0 .. $#fiel +ds );

can be done using a slice:

@thisrecord{@columns} = @fields;

Where you go after that depends on what you want to achieve. You may want something like:

for my $items (sort {$b->{Estimated_Value} <=> $a->{Estimated_Value}} +@data) { ... }

DWIM is Perl's answer to Gödel