[ { 'appname' => 'AAA', 'severity' => 'critical', 'line' => 1, 'event_age' => 12 }, { 'appname' => 'BBB', 'severity' => 'OK', 'line' => 2, 'event_age' => 32 }, { 'appname' => 'CCC', 'severity' => 'critical', 'line' => 3, 'event_age' => 4 }, { 'appname' => 'DDD', 'severity' => 'critical', 'line' => 4, 'event_age' => 22 }, { 'appname' => 'EEE', 'severity' => 'OK', 'line' => 5, 'event_age' => 4 }, { 'appname' => 'FFF', 'severity' => 'critical', 'line' => 6, 'event_age' => 1, }, { 'appname' => 'GGG', 'severity' => 'critical', 'line' => 7, 'event_age' => 8 }, { 'appname' => 'HHH', 'severity' => 'OK', 'line' => 8, 'event_age' => 10 }, { 'appname' => 'III', 'severity' => 'critical', 'line' => 9, 'event_age' => 7 }, { 'appname' => 'JJJ', 'severity' => 'critical', 'line' => 10, 'event_age' => 15 }, { 'appname' => 'KKK', 'severity' => 'OK', 'line' => 11, 'event_age' => 26 }, { 'appname' => 'LLL', 'severity' => 'critical', 'line' => 12 'event_age' => 23 }] #### #To sort the records for (@records){ if ($_->{'severity'} eq "critical"){ #sort the array @records and assign line number @records = sort{ $a->{event_age} <=> $b->{event_age} } @records; for my $i (0 .. $#records) { $records[$i]->{line} = $i + 1; } #End# } } # To Restrict the row count to 12 to fit the screen my $max = 12; for (@records){ if ($_->{'line'} < $max){ #DoNothing } } #Set Visibility to "No" if records are more then 12 for (@records+1..$max){ push @records, { line => $_, severity => "", ticketnum => "", appname => "", appname => "", event_age => "" , visible => "No", appspectname => "" }; } print Dumper \@records;