The second is inside your while; execution never gets there on a line with nothing but a return. Rather, the first "and next" sends execution back to the next while test.

This is the kind of thing you can test for yourself. As another user was advised, in paraphrase, the universe won't end when you try out your (safe) code (caveat: don't try this with code that could muck about with your system... or anybody else's. cf rm, unlink, etc.

Go ahead; try it! And, for extra credit, write a script that makes the output clear(er) to you (hint: put the second regex in a conditional and do something if a match occurs). Alt: run the script under the debugger, watching line 9 of the code above.