#!/usr/bin/perl use strict; my %reps = (); while(my $line = ){ $line =~ s/[\n\r]//g; my @array = split(/\s+/,$line); $reps{$array[0]}{$array[1]}{'end'} = $array[2]; $reps{$array[0]}{$array[1]}{'rep'} = $array[3]; } my $start = 160; my $end = 210; my $chr = "chr2"; for my $s (sort {$a<=>$b} keys %{$reps{$chr}}){ if ($start <= $reps{$chr}{$s}{'end'}) { last if $s >= $end; print "$chr $s $reps{$chr}{$s}{'end'} $reps{$chr}{$s}{'rep'}\n"; } } __DATA__ chr1 100 120 feature1 chr1 200 250 feature2 chr2 150 200 feature1 chr2 280 350 feature1 chr3 100 150 feature2 chr3 300 450 feature2