作者adu (^_^)
看板Perl
标题Re: [问题] 将很像hash形式中的值相加?
时间Sat Apr 25 00:40:25 2009
※ 引述《kornelius (c9s)》之铭言:
: try this?
: s/\w\w\*(\d)\s(\d)/ $h{$1}+=$2 /e while( <DATA> );
: use Data::Dumper::Simple;
: warn Dumper( %h );
: __DATA__
: VD*5 3
: YY*3 4
: Qv*5 2
: pQ*3 1
: 写的好看一点:
: my %h;
: while ( <DATA> ) {
: my ($k,$v) = m/\w\w\*(\d)\s(\d)/;
: $h{ $k } ||=0, $h{ $k }+=$v;
: }
由於没有装package,所以打算把资料写入@array去做
@array = qw{ks*5 12 pp*5 3};
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: 218.174.37.218