#!/usr/bin/env perl -l use strict; use warnings; my $first; print join ' ' => @$_ for grep { $_->[-1] - $first <= 500 } sort { $b->[-1] <=> $a->[-1] } map { $first = $_->[-1] unless $first; $_ } map { [ split ] } ; __DATA__ ID1 ch1 70 mir abc xyz ch2 2050 ID4 ch1 120 mir abc xyz ch2 2025 ID2 ch1 90 mir abc xyz ch2 4000 ID3 ch1 100 mir abc xyz ch2 2045