in reply to while loop logic
As soon as I saw a label (LOOP:) in your code, I knew we were in for something confusing. Sure enough, a couple of lines later, there's a next, but it's not just a plain next; it has to use the label, because the are intervening control-flow structures. The while loop logic in itself is not your problem. It's the logic of next that gets things all confused, and then to make it even more confusing you slap an until on the next. That's at least three levels of control-flow structures involved, which IMO is too many. (The amount of confusion surrounding next increases geometrically with the amount of control-flow structure involved.) I'm sure someone here is clever enough to iron out exactly how to make next skip the desired iterations, but I'm even more sure that there are less confusing ways to achieve what you want.
Others have suggested only printing if you aren't inside a comment. That'll work fine, and is a good way to do it. In the interest of of TMTOWTDI, another solution would be to do something like this when you detect the beginning of a comment:
{ local $/ = '*/'; <CMDTXTF>; } <CMDTXTF>;
The first diamond operator slurps everything up to the close of the comment in one fell swoop. The localized $/ tells it how far to go. The braces keep the change in $/ from leaking out to spoil the rest of your code. The second diamond operator should clean up the rest of the line after the */, even if it's just a newline character, so that you're ready for the next line when the loop resumes.
One caveat: if any of the lines might have $/ in other fields besides the fifth one, which don't apply to the fifth field (e.g., perhaps the fourth field of several consecutive records is commented out in this fashion, with no implications for the fifth), then this solution isn't smart enough to deal with that correctly.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: while loop logic
by Anonymous Monk on Jan 13, 2006 at 15:19 UTC | |
by jonadab (Parson) on Jan 13, 2006 at 15:39 UTC | |
by Anonymous Monk on Jan 13, 2006 at 15:46 UTC |