$ cat spw759180_NetWallah #!/usr/bin/perl # use strict; use warnings; my @probs =(0,0.1,0.53,0.51,0.59,0.67,0.2,0.04,0.05,0.56,0.89,0.75,0.6); my $t; print $_ . (",","\n")[$t=1-$t] for grep {($probs[$_] >=.5 .. $probs[$_]> .5) and $t=!$t } 0..$#probs $ ./spw759180_NetWallah 2 4,9 11,$ #### use strict; use warnings; my @probs = ( 0, 0.1, 0.53, 0.51, 0.59, 0.67, 0.2, 0.04, 0.05, 0.56, 0.89, 0.75, 0.1, 0.51, 0.6, 0.2, 0.7, ); my @inRange = grep { $probs[ $_ ] > 0.5 .. $probs[ $_ ] > 0.5 } 0 .. $#probs; my @starts = map { $inRange[ $_ ] } grep { $_ == 0 || $inRange[ $_ ] - $inRange[ $_ - 1 ] != 1 } 0 .. $#inRange; my @ends = map { $inRange[ $_ ] } grep { $_ == $#inRange || $inRange[ $_ + 1 ] - $inRange[ $_ ] != 1 } 0 .. $#inRange; printf qq{%3d%3d\n}, $starts[ $_ ], $ends[ $_ ] for 0 .. $#starts; #### 2 5 9 11 13 14 16 16