下面两断代码有什么区别?

下面两断代码有什么区别?

my @odd_numbers = grep {$_ % 2} 1..1000;
foreach (@odd_numbers){
print $_,"\n";
}

my @odd_numbers;

foreach (1..1000){
push @odd_numbers, $_ if $_%2;
print $_,"\n";
}

第一段打印出1-1000的基数
第二段也是一样,但是第二段最后一个数字是1000,为什么?


QUOTE:
原帖由 huanghaojie 于 2009-1-10 20:07 发表
第二段也是一样,但是第二段最后一个数字是1000,为什么?

什么的最后一个数字?


QUOTE:
原帖由 huanghaojie 于 2009-1-10 20:07 发表
my @odd_numbers = grep {$_ % 2} 1..1000;
foreach (@odd_numbers){
print $_,"\n";
}

my @odd_numbers;

foreach (1..1000){
push @odd_numbers, $_ if $_%2;
print $_,"\n";
}

第一段打印出1- ...

第一个是打印odd_numbers中的值,也就是1..1000中的奇数值;
第二个是打印1..1000中所有的值,奇数值会被存入@odd_numbers
第一个程序的输出
1
**
**
995
997
999
第二个程序输出
1
**
**
995
997
999
1000


QUOTE:
原帖由 huanghaojie 于 2009-1-10 20:27 发表
第一个程序的输出
1
**
**
995
997
999
第二个程序输出
1
**
**
995
997
999
1000

你再仔细看看你的代码


QUOTE:
foreach (1..1000){
    push @odd_numbers, $_ if $_%2;
    print $_,"\n";
}

第二段输出的是$_ (1..1000)