#! perl -slw use strict; sub minpos { my( $v, $s, $e ) = @_; my( $n, $min, $o ) = ( 0, 1e30, 0 ); for my $p ( $s .. $e ) { $n += vec( $v, $p, 1 ) ? 1 : -1; ( $min, $o ) = ( $n, $p ) if $n < $min; } return $o; } my $vec = pack 'b*', '100101000100'; my( $s, $e ) = ( 1 , 7 ); printf "The minima between %d - %d is at %d\n", $s, $e, minpos( $vec, $s, $e ); __END__ C:\test>junk5 The minima between 1 - 7 is at 7