sub mergeSort { #Takes reference to array, index to sort on, beginning index, and end index my ($aref, $index, $begin, $end)=@_; my $size=$end-$begin; if($size<2) {return;} my $half=$begin+int($size/2); mergeSort($aref, $index, $begin, $half); mergeSort($aref, $index, $half, $end); for(my $i=$begin; $i<$half; ++$i) { if($$aref[$i][$index] > $$aref[$half][$index]) { my @va=@$aref[$i]; my $v=$$aref[$i][$index]; @$aref[$i]=@$aref[$half]; my $i=$half; while($i<$end-1 && $$aref[$i+1][$index] < $v) { (@$aref[$i], @$aref[$i+1])= (@$aref[$i+1], @$aref[$i]); ++$i; } @$aref[$i]=@va; } } } # end sub #Sort by uptime mergeSort(\@data, 8, 0, scalar(@data)); #Sort by 3rd section of interface cx/x/UX mergeSort(\@data, 12, 0, scalar(@data)); #Sort by 2nd section of interface cx/X/ux mergeSort(\@data, 11, 0, scalar(@data)); #Sort by 1st section of interface CX/x/ux mergeSort(\@data, 11, 0, scalar(@data));