$chrom='chr1'; $start=9839; $stop=9841; while () { if (/variableStep chrom=$chrom/ ... /variableStep chrom/) { if (/^$start\b/ .. /^$stop\b/) { chomp; push @result, (split ' ',$_,2)[1]; } } } use Data::Dumper; print Dumper \@result; __DATA__ variableStep chrom=chr1 9837 0.010 9838 0.008 9839 0.007 9840 0.004 9841 0.002 9842 0.001 variableStep chrom=chr2 9837 0.090 9838 0.038 9839 0.017 9840 0.044 9841 0.052 9842 0.091