map构建hash的一例疑问,请您指教!

map构建hash的一例疑问,请您指教!



QUOTE:
my %id_result = map { /(\d+)\s+(.*)\s*/,$id_all{$1}} <ID_RESULT>;

请问如上构建的hash的keys与values分别对应上句逗号前后部分么?即,keys=/(\d+)\s+(.*)\s*/,values=$id_all{$1},对么?

如果不对,我想构建逗号前后部分分别为keys和values的hash函数,请问该如何写?谢谢!
map对这个列表里的每个元素进行{ /(\d+)\s+(.*)\s*/,$id_all{$1} }计算,每次计算的结果返回一个2元素的列表,换句话说,就是%id_result的key和value呀。所以map最终的结果就是一个hash了。
兄弟,我是问上面句子中,key和value分别是哪两个部分的值?谢谢!
perldoc -f map
文档里写得很清楚


QUOTE:
原帖由 mouse.rice 于 2008-2-2 08:55 发表

请问如上构建的hash的keys与values分别对应上句逗号前后部分么?即,keys=/(\d+)\s+(.*)\s*/,values=$id_all{$1},对么?

如果不对,我想构建逗号前后部分分别为keys和values的hash函数,请问该如何写?谢谢!

这样对吗?
my %id_result = map { /(\d+)\s+(.*)\s*/,$_ => $id_all{$1}} <ID_RESULT>;
<ID_RESULT>每行中匹配(\d+)\s+(.*)\s*这个,那么就是%id_result的key,其value就是$id_all{$1},貌似我已经说得很明白了  


QUOTE:
原帖由 mouse.rice 于 2008-2-2 08:55 发表

请问如上构建的hash的keys与values分别对应上句逗号前后部分么?即,keys=/(\d+)\s+(.*)\s*/,values=$id_all{$1},对么?

如果不对,我想构建逗号前后部分分别为keys和values的hash函数,请问该如何写?谢谢!

看上去有点儿眼熟....
map中不一定是,前后分别为key和value.
你这么写的话, 依次取2个元素构建key=>value