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?


In reply to Re: foreach argument modification inside loop, followed by return from loop by rjt
in thread foreach argument modification inside loop, followed by return from loop by vsespb

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.