作者kornelius (c9s)
看板Perl
标题Re: [问题] 将很像hash形式中的值相加?
时间Sat Apr 25 01:37:12 2009
※ 引述《adu (^_^)》之铭言:
: ※ 引述《kornelius (c9s)》之铭言:
: 由於没有装package,所以打算把资料写入@array去做
: @array = qw{ks*5 12 pp*5 3};
不需要装 package 呀。 qw( ) 的定义你查一下 perldoc
perldoc -f qw
是用空白将字串分割成串列。
所以当你用上面的作法,你实际上会得到
('ks*5' , 12 , 'pp*5' , 3);
我前面那段用的模组也只是 Data::Dumper::Simple 而已,目的只是
在你跑的时候,可以清楚看到结果。你若是不使用也是没关系的。 :)
__DATA__ 以下是当作资料输入,所以 <DATA> 每次会读一行 __DATA__ 以下的资料。
: my %h;
: while (@array) {
: my ($k,$v) = m/\w\w\*(\d)\s(\d)/;
: $h{ $k } ||=0, $h{ $k }+=$v;
: }
: 并没有像预期一样得到5 15的结果,请问该怎麽处理呢:)
: 有尝试写一个Script,不过也是error百出
: @array = qw{5 12 5 3}; #先做前处理,让资料都是数字
: @array = %KV; #把5 12 5 3变成hash
: while(keys %KV) { #如果有%KV的存在
: if(keys %KV = keys %KV){ #如果hash中有两个相同的key
: values %KV = (values %KV + values %KV) #则把value相加
: }
: 原本以为会顺利,还是出现error..
: 能请问版大们怎麽改正吗:)
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.168.163
※ 编辑: kornelius 来自: 122.117.168.163 (04/25 01:57)
1F:推 adu:原来如此!谢谢您~ 04/25 09:00