While searching for multiple patterns on the same string, search continues from previous successful match point in the string. Is this expected ? How to make each pattern search start from beginning of the string each time.

Yes, this is a feature; the /g modifier in scalar context means "start matching where I last left off". From perlretut:

The modifier //g stands for global matching and allows the matching operator to match within a string as many times as possible. In scalar context, successive invocations against a string will have //g jump from match to match, keeping track of position in the string as it goes along.

So the solution is to simply remove that modifier from the first two regexen, the ones that check if the file's a valid one. Alternatively, you could reset the position by using pos (which returns an lvalue, so you can assign to it).

That said, I'm taking a stab in the dark here as to what you want to accomplish. If this isn't it, could you be so kind and give us some sample data, along with the expected output you expect? In particular, I'm curious whether the file is supposed to contain only numbers; the "all zeros" check makes me think it is, but the first check does not ensure this.

P.S. please don't use line numbers in your code -- it just makes it more difficult to download/copy and paste.


In reply to Re: Regex String by AppleFritter
in thread Regex String by egal

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.