foreach 语句

foreach 语句

example: foreach $a (@arry) {
print  "$a \n" ;
}
这个例子打印出来的数组变量为什么是无限循环呢?
比如@arry = {1,2,3};
执行完后:1,2,3 1,2,3 ...........................................................1,2,3
请告诉我怎么才能只打一遍?而不是反复循环?
@arry = {1,2,3}; 这样写是不对的。
不过尽管如此,也不可能是死循环。
检查一下别的地方是不是有问题。
=>{1,2,3}

(1,2,3)
我最喜欢的语句就是foreach语句。
@array={1,2,3}
应该是@array=(1,2,3);
如果是中括号,返回的是数组的引用,那么大括号返回的估计是哈希的引用,总之这样写是不对的
抱歉哪个是打错了,我把原本的遇到的问题说出来吧:
我读取一个文件到数组中,然后有print  FILEHANDLE  @array ;
到另一个文件,结果成了无限循环,CTRL+C后,发现复制后的文件里面将原本的文件复制了N份


QUOTE:
原帖由 flw 于 2008-8-3 11:40 发表
@arry = {1,2,3}; 这样写是不对的。
不过尽管如此,也不可能是死循环。
检查一下别的地方是不是有问题。

@arry = {1,2,3}; #有何不对?
@arry = (1,2,3);  #这样吧
# test.pl
use strict;

my @arr = {1,2,3};                  #hash
foreach my $a (@arr) {
        print "$a\n";
}

>perl test.pl
>HASH(0x275b90)
------------------------------------------------------
use strict;

my @arr = (1,2,3);                   #数组

foreach my $a (@arr) {
        print "$a";
}

>perl test.pl
>1 2 3

不会出现死循环的. 你可以再测试一下. 或者把程序亮一下.


QUOTE:
原帖由 agen_0502 于 2008-8-4 00:00 发表



@arry = {1,2,3}; #有何不对?
@arry = (1,2,3);  #这样吧

@arry = {1,2,3}
右边的{}返回一个匿名hash的引用, 作为数组@arry的第一个元素:

print $arry[0]->{1};

但是key3却没有相应的value了,这不符合LZ的本意.


QUOTE:
唯坚持,得成功.
C++名人Alexandrescu(<<Modern C++ Design>>作者)说,"十几岁的少年天才到处都有,三十多岁的优秀设计师凤毛麟角".我做不了十几岁的少年天才,但愿能做三十多岁的优秀工程师.

赞一下!