foreach控制结构的用法[求助]

foreach控制结构的用法[求助]

foreach控制结构的用法[求助]
程序如下:
sub total
{ foreach(@_)
  {$num=shift@_;  $sum+=$num;  }
  $sum; 
}
my @fred=qw{1 2 4 6 5 };
my $fred_total=&total(@fred);
print "the total number is: $fred_total;"

foreach不是能够循环列表中的每个元素吗?为什么这个求和的子程序只能得到前三个的和?是不是我的程序哪里有问题,望指教,谢谢!
[quote]--sub total {

sub total {

  my $sum;

  foreach my $value (@_) {
   $sum+=$value;
  }
  $sum;
}
my @fred=qw{1 2 4 6 5 };
my $fred_total=&total(@fred);
print "the total number is: $fred_total;"


这样就正常了
谢谢啊![CCB]1[/CCB].
谢谢啊!
一楼的程序是什么原因导致.
一楼的程序是什么原因导致把后面两个数给落了呢,还是没明白!
我也不知道,不过现在先用.
我也不知道,不过现在先用着,嘿嘿
[quote]回复给 洲洲young .
回复给 洲洲young : 一楼的程序是什么原因导致....


不知道是不是因为foreach和shift都在操作@_,导致有一些被跳过了,具体细节我也不清楚,我的脚本都是按照文档里推荐的写法写的。




   

这里没有必要再shift了,另外如果对$_ 不熟悉还是别偷懒了,定义变量吧
[CCB]10[/CCB],谁知道什么.
,谁知道什么原因了
再来看数组的构成,数组在P.
再来看数组的构成,数组在PERL的内部是由2部分结构组成,在第2个部分,有2个指针,其中一个xmalloc指向一个连续的数组(C中),这个数组是指针数组,每个元素是指向perl中的标量结构的指针.一般来说,perl会预先分配合适的数组空间(xmax个)给xmalloc,如果数组超界,则会分配存储空间并扩展xmalloc数组.此外,x_array是一个数组的索引指针,指向xmalloc中的第一个有效的元素,初始化的时候,指向的是xmalloc[0],以后如果是执行shift,则会增加x_array,避免向左移动数组的元素.
偏移量:+2 ,FOREACH认为已经遍历完毕