可以用散列的each函数实现赋值吗,

可以用散列的each函数实现赋值吗,

现在要实现,生成一 hash, key 从 1 到 100, 对应的值分别是 100 到 1,也就是 $hash{100} = 1, $hash{99} = 2, ...
然后按 key 的大小从小到大输出,想问问大家我们用each读散列就见得多了,能用each实现对散列的赋值吗,例如,


@key=(1..100);
@values=reverse (1..100);
each %hash=(@key,@values);

while( (@k,@v)=each %hash){

    print "@k=>@v\n";

}


当然我们也可以这样做,

for (1..100 {
    $hash{$_} = 100 - $_;
}

for (sort {$a <=> $b} keys %hash) {
    print qq/\$hash{$_} = $hash{$_}\n/
}
@key = (1..100);
for(@key){
        $hash{$_} = $#key-$_+2;
        print "$hash{$_}\n";
}
没明白你想干啥。
你把你的目的说出来就行了,哪有指名道姓非要 each 做的?
楼主的100应该是101,一楼的是对的。
一行搞定的事情,还需要什么each。

QUOTE:
@keys = (1 .. 100);
@values = reverse @keys;
$hash{$keys[$_]} = $values[$_] for(0 .. $#keys);
print $_,"==>",$hash{$_},"\n" for (sort {$a<=>$b} keys %hash);

my @num_array = (1..100);
my %num_hash  = map {$_, @num_array - $_ + 1} @num_array;