### Re: Foreach Loops

by ikegami (Pope)
 on Mar 15, 2005 at 18:58 UTC ( #439715=note: print w/replies, xml ) Need Help??

You can do this, which is somewhat better.

```for my \$x (0..\$#arr) {
my \$line = \$arr[\$x];
##  stuff goes here;
}

It's even optimized to not create the list.

Replies are listed 'Best First'.
Re^2: Foreach Loops
by cog (Parson) on Mar 15, 2005 at 19:11 UTC
And, of course, the previous line is available at \$arr[\$x - 1]

(unless we're talking \$x == 0)

Well, if you consider arrays to be circular, if \$x == 0, then \$arr[\$x - 1] is the last element. Which would be just right. Unfortunally, it doesn't work the way. \$arr[\$#arr + 1] isn't the same as \$arr[0].
Re^2: Foreach Loops
by Anonymous Monk on Mar 16, 2005 at 15:16 UTC
You say that for my \$x (0 .. \$#arr) is "better" than for (my \$x = 0; \$x < @arr; \$x ++). Now, I don't care much what you find better, but since you have a preference that you find important enough to advocate, I'm interested in why you find your preference "better".
It's even optimized to not create the list.
Yeah, because it's special cased. The C-style loop doesn't create a list at all, and is even "optimized" in older versions of Perl.
I'm interested in why you find your preference "better".

The OP asked for something Perl-ish, so anything more Perl-ish than the C-ish code he provided is better in this context. Since C doesn't have the .. operator, this qualifies.

I also think it's more readable. Instead of having to deal with three expressions, three operators and a keyword inside for's parens, the solution I presented has one operator. The iterator's decleration is even sperated from the bounds for extra readability.

Yeah, because it's special cased. The C-style loop doesn't create a list at all, and is even "optimized" in older versions of Perl.

My point was that the performance isn't any worse than the C version, contrary to what I once thought, and contrary to what many probably think.

Create A New User
Node Status?
node history
Node Type: note [id://439715]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2020-04-04 09:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
The most amusing oxymoron is:

Results (32 votes). Check out past polls.

Notices?