global special variable for array index?
Bobby Kleemann
rkleeman at neta.com
Thu Apr 20 18:33:35 CDT 2000
~sdpm~
On Thu, 20 Apr 2000, Bruce Timberlake wrote:
> ~sdpm~
> > 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...
> I don't think there is a special variable a la $_ for loop iteration
> counting.
Unfortunately there isn't. The reason is that when traversing a list with
the foreach loop, I think perl traverses it more like a linked list than
an actual array, so it never really knows what number in the chain it is,
only if it's at the begining, middle, or end.
> I think what would work for you is:
>
> $index = @list;
>
> at the loop exit, which will set $index equal to the number of elements
> in @list. E.g.,
> my $index;
> my $element;
> @list = ("Larry", "Moe", "Curly");
> foreach $element (@list) {
> ... # process $element
> }
> $index = @list; # $index now equals 3
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.
_ _ _
Bobby Kleemann <rkleeman at neta.com>
http://www.neta.com/~rkleeman/
~sdpm~
The posting address is: san-diego-pm-list at hfb.pm.org
List requests should be sent to: majordomo at hfb.pm.org
If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at happyfunball.pm.org> 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 happyfunball.pm.org> .
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