Output:use strict; use Data::Dump qw/dump/; my %data; while (<DATA>) { chomp; my ( $field1, $field2, $field3, $field4 ) = split '\s+'; $data{$field1}{$field2}{'min'} = $field3 if ( not defined $data{$field1}{$field2}{'min'} or $field3 < $data{$field1}{$field2}{'min'} ); $data{$field1}{$field2}{'max'} = $field4 if ( not defined $data{$field1}{$field2}{'max'} or $field4 > $data{$field1}{$field2}{'max'} ); } ## end while (<DATA>) print dump( \%data ); __DATA__ 253868 20 317 2628 253868 20 317 7294 256158 9 329 371 256158 9 329 86450 728481 1 353 1361 154664 7 440 449688 154664 7 440 563
Getting the data-structure into your output format is left as exercise for the reader.{ 154664 => { 7 => { max => 449688, min => 440 } }, 253868 => { 20 => { max => 7294, min => 317 } }, 256158 => { 9 => { max => 86450, min => 329 } }, 728481 => { 1 => { max => 1361, min => 353 } }, }
CountZero
A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James
In reply to Re: Minimum and Max values from same Key
by CountZero
in thread Minimum and Max values from same Key
by cowboyrocks
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |