1

有什么方法可以在 perl 中跟踪 for 循环中迭代的元素数量:就像使用特殊变量一样:

@arrayElements = (2,3,4,5,6,7,67);
foreach (@arrayElements) {
    # Do something
    # Want to know how may elements been iterated after 
    # some n number of elements processed without using another variable.
}
4

3 回答 3

8

要么在你走的时候算数:

my $processed = 0;
foreach my $element (@array_elements) {
    ...
    ++$processed;
}

或迭代索引:

foreach my $index (0..$#array_elements) {
    my $element = $array_elements[$index];
    ...
}
于 2013-04-16T17:07:25.793 回答
4

在 perl5 v12 及更高版本中,您可以使用each迭代器:

while(my($index, $element) = each @array_elements) {
  ...;
}

然而,更便携的解决方案是迭代索引,并手动访问元素,如ysth所示。

在任何情况下,访问过的元素(包括当前元素)的数量都是$index + 1.

于 2013-04-16T17:10:30.800 回答
0

您可以将数组中的元素数设为

    my $num = @arrayElements;
    print $num;

或者

   my $num = scalar (@arrayElements);
   print $num;

或者

   my $num = $#arrayElements + 1;
   print $num;

为了查找迭代的元素数量,我们可以使用以下代码:

my $count = 0;  #initially set the count to 0
foreach my $index(@arrayElements)
{
  $count++;
}
print $count;
于 2013-04-17T07:07:34.847 回答