Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re^4: Perlplexation - foreach shoulda Known

by JavaFan (Canon)
on Apr 13, 2012 at 21:47 UTC ( #964999=note: print w/replies, xml ) Need Help??

in reply to Re^3: Perlplexation - foreach shoulda Known
in thread Perlplexation - foreach shoulda Known

Ah, you mean, "$_ is the default iterator value, but it's easily replaced by another variable"? How should that work for the loop counter?

Replies are listed 'Best First'.
Re^5: Perlplexation - foreach shoulda Known
by Riales (Hermit) on Apr 13, 2012 at 22:04 UTC

    Right...I think. If I need to use the value of $_ in a nested loop, I'd just assign it to another variable:

    for (0 .. 10) { my $outer_elem = $_; for (0 .. 20) { my $inner_elem = $_; do_something($outer_elem, $inner_elem); } } # Yeah, I know doing this is better: for my $outer_elem (0 .. 10) { for my $inner_elem (0 .. 20) { do_something($outer_elem, $inner_elem); } }

    So I guess the loop counter would just keep a count of the most immediate loop it's in. I don't really know--this is all just how I would expect such a variable to work (if it existed).

    So if we pretend $. is the loop counter:

    foreach my $elem1 (@array1) { my $outer_idx = $.; foreach my $elem2 (@array2) { my $inner_idx = $.; # Blablabla... } }

    I should emphasize: I'm not pushing for this to become a feature or anything. I was just curious if there was anything like this (and this is how I would imagine it might work if there was).

      If you're willing to scribble away the value of $. in a variable at the beginning of the body, you might as well write:
      my ($i, $j); foreach .... { ++$i; foreach .... { ++$j; } }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://964999]
[Corion]: hippo: At least for the German translation, the wordplay is translated as well
[Discipulus]: always! but if i can ask choroba why you always use the inverted (to me) form 1 == $.?
[choroba]: To avoid accidental overwriting of the variable in if ($x = 3)
[karlgoethebier]: Corion: Auch in hessisch? Mer wasses net.
[Corion]: Hmm - I'm not sure, I haven't read the mundart/slang translations ;)
[Eily]: $F[1] =~ s/^0//r could be written as (0+$F[1]). It's less explicit though
[Discipulus]: ah! seems wise choroba, you play safe
[shmem]: Eily: also -+-$F[1]

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (11)
As of 2017-05-24 08:42 GMT
Find Nodes?
    Voting Booth?