Re: [問題] 將很像hash形式中的值相加?

看板Perl作者 (c9s)時間16年前 (2009/04/25 01:37), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《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)

04/25 09:00, , 1F
原來如此!謝謝您~
04/25 09:00, 1F
文章代碼(AID): #19yVZBiP (Perl)
文章代碼(AID): #19yVZBiP (Perl)