my @data; while ($running) { unless ($nfound) { ... } else { @data = split /\n/, $rawdata; } for (my $i=0; $i<=$#data; ++$i) { printf "data[$i]=%s\n", $data[$i]; } foreach (@data,) { print "line=".$_."\n"; if (...) { ... push @data, [ $name, $rrate, $wrate, $total ]; } } my @sorted_data = sort { $a->[3] <=> $b->[3] } @data; ... @data = undef; } #### while ($running) { my @data; unless ($nfound) { ... } else { @data = split /\n/, $rawdata; } for (my $i=0; $i<=$#data; ++$i) { printf "data[$i]=%s\n", $data[$i]; } my @parsed_data; foreach (@data,) { print "line=".$_."\n"; if (...) { ... push @parsed_data, [ $name, $rrate, $wrate, $total ]; } } my @sorted_data = sort { $a->[3] <=> $b->[3] } @parsed_data; ... }