if (++$pos_count != $current[2]) { for my $pos ($pos_count .. $current[2]-1) { print join("\t", $current[1], $pos, '','', '1'), "\n"; } } #### if (++$pos_count != $current[2]) { fill_interval($pos_count, @current); } #### sub fill_interval { my ($pos_count, @current) = @_; my $margin = 8; if ($current[2] - $pos_count <= 2*$margin) { for my $pos ($pos_count .. $current[2]-1) { print join("\t", $current[1], $pos, '','', '1'), "\n"; } } else { my @bool; my ($start, $end) = ($pos_count, $current[2]-1); for my $i (0..$margin-1) { @bool[ $start + $i, $end - $i ] = (1,1); } for my $pos ($pos_count .. $current[2]-1) { print join("\t", $current[1], $pos, '','', $bool[$pos] || 0), "\n"; } } }