%hash怎么实现这样的?

%hash怎么实现这样的?

use strict;
use warnings;
opendir(DIR,"c:\\");

@list=readdir(DIR);
closedir(DIR);
%hash=map (($_ ."\n"),@list);

请问一下.我map之后的hash结构的keys和values都是@list的内容.
我能用什么办法把keys变成一个1,2,3..100的递增的数字么?谢谢
我以前不是用的%hash.我直接用for实现的.现在想用用hash.是不是我想得太复杂了.

练习一下:

map { $hash{$i++}=$_ } @list;
谢谢,似乎那个数字不是正常排序的.不是从小到大的.
my %hash = map { $_ + 1 => $list[$_] } (0..$#list);
hash本身是无须的, 顺序是在取数据时人为排序形成的.

我想知道, 你为什么要用key为序号的hash而不用原来的list呢?


QUOTE:
原帖由 Lonki 于 2007-12-16 19:41 发表
my %hash = map { $_ + 1 => $list[$_] } (0..$#list);
hash本身是无须的, 顺序是在取数据时人为排序形成的.

我想知道, 你为什么要用key为序号的hash而不用原来的list呢?

对,hash就是根据key值优化存储的,如果要按key顺序不如用list。