I would like to sort my final report in the following order: $data[31],$data[32],$data[38]
How would I add this into my following program to get the report sorted this way? Thanks in advance. Chris #!/usr/bin/perl use warnings; #use strict; use FileHandle; use IO::Handle; RAW->format_lines_per_page(10000000000); format RAW_TOP = @||||||||||||||||||||||||||||||||||||||| "######--> Smart Phone report. <--######", Market ESN/MIN Mobile Cell Sector Carrier Bytes ======================================================================================== . format RAW = @<<<<<<<< @|||||||||||||| @|||||||||||||| @|||||||| @|||||||| @||||||| @>>>>>>>> $mkt,$mtype,$smartPhone,$cell,$sector,$carrier,$rlptxat . # SmartPhone type Hash based on ESN or MEID HEX number my %smartPhone = ( "CURVE850a" => { start => "a000001ca64E38", end => "a00000255c29c0", }, "KYOM6000" => { start => "a0000012b71b00", end => "a0000012fef1a0", }, "CURVE850" => { start => "ffffffff001388", end => "ffffffff001770", }, # "Huawei" => { start => "a00000130fa7d0", # end => "ffffffff001770", }, ); #### Market assignment Hash based on cell number my %marketInfo = ( MCI => { start => 1, end => 299, }, STL => { start => 300, end => 599, }, ICT => { start => 800, end => 850, }, ); sub getSmartPhone { my $val = shift; foreach my $k (keys %smartPhone) { my ($start, $end) = @{$smartPhone{$k}}{qw/start end/}; return $k if $start ge $val and $val le $end; } return ""; } sub getMarket { my $val = shift; foreach my $k (keys %marketInfo) { my ($start, $end) = @{$marketInfo{$k}}{qw/start end/}; return $k if $start <= $val and $val <= $end; } return ""; } open(RAW, ">test.rpt"); while (<>) { chomp; if (/;/) { @data = split /;/; if ($data[31] =~ m/^-?\d+$/) { #### regular expression for real numerical value $mkt = getMarket($data[31]); } else { $mkt = ""; } if ( length($data[5]) > 12) { $smartPhone = getSmartPhone(substr($data[5],2,14)); } else { $smartPhone = ""; } ($mtype,$cell,$sector,$carrier,$rlptxat) = ($data[5],$data[31],$data[32],$data[38],$data[44]); # print "$mkt\t $mtype\t $smartPhone\t $cell\t $sector\t $rlptxat\n"; write(RAW); } } select(RAW); close(RAW);