my $range_start = 700; my $range_end = 1200; my %out = (); while (<>) { if ( /bn(\d+),/ && $1 >= $range_start && $1 <= $range_end ) { my $bn = $1; my ($when) = /^[^,]+,\w+\s+(\S+)\s/; $out{$bn} = $when; } } foreach my $ranger ( sort { $a <=> $b } keys %out ) { print $ranger, ' - ', $out{$ranger}, "\n"; }