global special variable for array index?

Bruce Timberlake brucet at
Thu Apr 20 19:03:04 CDT 2000

> > > Isn't there a global special variable for the list index when 
> > > you're stepping through a list with a for (= foreach)
> > > statement?  For example, I frequently have code like this:
> > > 
> > > my $index;
> > > for my $element (@list)
> > > {
> > >     # some processing on $element
> > >     $index++;
> > > }
> > > 
> > > It would be much easier if there were a global special variable
> > > (like $. for line numbers) so I don't have to keep track of
> > > $index myself.
> > 
> > First off, with that syntax you want to be doing a "foreach," not
> > "for."
> You spell potatoe, I spell potato.  :-)  They both do the same thing
> in this context.  Foreach is clearer, but for is quicker to type...

But "for" syntax is (according to The Camel, anyway):

  for ( initial_exp; test_exp; re-init_exp ) {

The code listed more closely matches the "default" foreach syntax, so
that's what I guessed was really meant... :)

I guess with a "for" loop you could do something like:

  my($i, $index);
  @list = (qw(Larry Moe Curly));
  $index = @list;

first, and then set up your loop as

  for ($i = 1; $i <= $index; $i++ ) {
    $element = $list[$i];
    ... # process $element

but foreach is just so much cleaner...

> This works only if you want the count at the end.  The way that was
> originally proposed is the best way to do it, at least that I am aware
> of.  

What was originally proposed did not specify whether the iteration count
was or was not being used inside the loop.  As there was no reference
to $index other than the increment, I guessed it wasn't important within
the loop itself.  You are correct: if you need access to the iteration
count while inside the loop, then yes, the original idea is the only
one which works.


FREE voicemail, email, and fax...all in one place.
Sign Up Now!


The posting address is: san-diego-pm-list at

List requests should be sent to: majordomo at

If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at> with the following
command in the body of your email message:

    unsubscribe san-diego-pm-list

If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at> .
This is the general rule for most mailing lists when you need
to contact a human.

More information about the San-Diego-pm mailing list