The following script gives the output you want. I'm not sure it does it in the desired way, though, as you haven't described how exactly to get the value.

#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my ($START, $END, $SIZE) = (1, 1524, 150); my @range; while (my $line = <DATA>) { my ($pos, $from, $to) = split / |\.\./, $line; if ($START == $from && $END == $to) { @range[$pos .. $SIZE + $pos - 1] = (1) x $SIZE; } } say scalar grep $_, @range; __DATA__ 46 1..1524 832 1..1524 1008 1..1524 1407 1..1524 2360 2052..3260 2967 2052..3260 403 1..1524 800 1..1524 2986 2052..3260 3170 2052..3260

UPDATE Moreover, it seems your description ("Making the array 1 if it contains the position+150 else the array is set to 0") should produce a different output, as you only want to count the part of the 1407 that overlaps 1..1524. The following code does that, and show an alternative approach, without using the array - it uses a hash to remember the positions where the state of the element would change.

#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use Syntax::Construct qw{ // }; my ($START, $END, $SIZE) = (1, 1524, 150); my %borders; while (my $line = <DATA>) { my ($pos, $from, $to) = split / |\.\./, $line; if ($START == $from && $END == $to) { $borders{$pos}++; $borders{ $pos + $SIZE + 1 }--; } } my ($sum, $step) = (0, 0); for my $i ($START .. $END) { $step += $borders{$i} // 0; $sum++ if $step; } say $sum; __DATA__ 46 1..1524 832 1..1524 1008 1..1524 1407 1..1524 2360 2052..3260 2967 2052..3260 403 1..1524 800 1..1524 2986 2052..3260 3170 2052..3260

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

In reply to Re: find the coverage of sequence in a particular range by choroba
in thread find the coverage of sequence in a particular range by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.