in reply to foreach argument modification inside loop, followed by return from loop
Such code works fine,
Maybe. Have you tested this with every significant code path in the Perl interpreter on multiple platforms? Do you even know the significant code paths? Can you guarantee it will remain stable with tied variables? XS subs? Refs? Resized arrays? There are a lot of permutations you would need to go through before I'd be convinced this array modification "works fine".
However I wondering is that considered a bad code
I think the documentation is pretty clear: "don't do that". Just because the implementation happens to (seem to) work for whatever case you've come up with, directly going against the documented limitations of a fundamental Perl loop keyword is just begging for trouble, either now, or (possibly with greater consequences), later on down the road when everyone has forgotten the stupid unnecessary risk you took, with a for loop or two buried in a large program.
Your code:
my @a = (1,2,3); for (@a) { if ($_ == 2) { pop @a; last; } } print @a;
What's wrong with print grep { $_ != 2 } @a;1, anyway? More efficient, and guaranteed not to get you fired from your job.
Sorry if this seems a bit doom and gloom, but I really just don't get what you hope to gain, here. Perhaps you could explain?
________
1. Well, if your goal is obfuscation, you got me. I just realized your code is actually along the lines of pop @a if grep { $_ == 3 } @a;. Cute, but I still don't see the point?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: foreach argument modification inside loop, followed by return from loop
by vsespb (Chaplain) on Jul 10, 2013 at 10:40 UTC | |
by rjt (Curate) on Jul 10, 2013 at 13:04 UTC | |
by vsespb (Chaplain) on Jul 10, 2013 at 13:29 UTC | |
by rjt (Curate) on Jul 10, 2013 at 14:37 UTC | |
by vsespb (Chaplain) on Jul 10, 2013 at 14:57 UTC | |
| |
|
Re^2: foreach argument modification inside loop, followed by return from loop
by shawnhcorey (Friar) on Jul 10, 2013 at 12:20 UTC | |
by rjt (Curate) on Jul 10, 2013 at 13:19 UTC |