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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |