Re: [問題] 將很像hash形式中的值相加?
※ 引述《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
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章