http://www.perlmonks.org?node_id=1050744


in reply to Re^3: Make string that results from split behave like double-quoted string
in thread Make string that results from split behave like double-quoted string

The "line" I posted was actually an excerpt, and identical

to the one in your second example. I am confused about

what you think I did wrong.

I was actually referring to glenn's code, which

made no use of the counter aside from indexing.

Even if you were to want to show a counter, there are other ways

my $c = 0; for(@a){ print "$c: $_\n"; $c++; }
  • Comment on Re^4: Make string that results from split behave like double-quoted string
  • Download Code

Replies are listed 'Best First'.
Re^5: Make string that results from split behave like double-quoted string
by ww (Archbishop) on Aug 24, 2013 at 12:57 UTC

    Sorry, in the first instance, for appearing to attribute error to you. The problem I intended to address, IMO, is threefold -- unwise use of a C-style loop, incorrect understanding of the /pattern/ in split and processing that doesn't touch the relevant data.

    1. You're absolutely correct to say "glenn's code...made no use of the counter aside from indexing." In fact, that pretty much encapsulates my first and third points -- sorry that wasn't clearer -- which is that iterating over an array but printing only the counter, $x, as in your code or glenn's won't get you the contents of the array. They're being extracted (NB exception below) and discarded to the bit bucket. If one merely wishes to create an ordered numeric sequence, there are better ways, one of which may, depending on circumstances, be the method you show.
    2. As to that 'exception' comment, glenn's @arr appears by magic, without a source, in the split line. If the source is a record andan array, as in OP's example, 1,1999,"ln with \n newline", and is somehow contained in the default var, $_ ... well, then the var isn't an array. Oops!
    3. And if the record is seen as a string, the cited code won't work because the pattern in split, "/\|/, is the token upon which the source data is separated. Perhaps the writer confused split and join. (Many replies seem to assume there are vbars in OP's data. I don't see them.)

    Apologies to all those electrons which were inconvenienced by the creation of this post.

      Ah I see more what your thoughts are now. :)

      I think glenn's code is supposed to be within

      a while (<FH>) { loop implicitely.