#!/usr/bin/env perl use 5.010; use warnings; use strict; my $max = 0; my @lines; # 2D array, each element holding a line and its Fanout value while (){ if (/(\d+)\s+INT_NET/ and $1 >= $max ){ push @lines, [$_,$1]; $max = $1; } } print for map { $_->[0] } grep { $_->[1] == $max } @lines; __DATA__ Fanout Type Name -------------------------- 2 INT_NET Net : c_c Driver: c_pad 2 INT_NET Net : b_c Driver: b_pad 2 INT_NET Net : a_c Driver: a_pad 1 INT_NET Net : sum_c Driver: sum_1_SUM0_0 1 INT_NET Net : N_5 Driver: sum_1_CO0_i