Re: [問題] 讀取檔案的內容

看板Perl作者 (C語言)時間12年前 (2012/11/07 16:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/10 (看更多)
老實說你的敘述我看不太懂, 你應該是把右邊那排資料當作號碼, 左邊的資料當作出現次數 然後把出現的次數全部加總對吧 以下依據我的理解實作, 我就不讀檔了 1. 我把你資料每一行讀到 @strings 作為字串陣列 2. 利用正規表示式把資料取出到 $1 $2 $2 當作 anonymous hash 的 key, $1 為其值, 建立 hash 將 $1 轉為數字 scalar, 加總後存回 3. 排序後印出 希望是你要的囉 #!/usr/bin/perl #1 my @strings = split '\n', " 0 1 0 2 0 3 0 4 1 1 0 2 2 3 1 4 0 1 1 2 "; #2 foreach (@strings) { $data->{ $2 } += int($1) if /(\d+)\s*(\d+)\s*/; } #3 print "Number: $_, Times: $data->{ $_ } \n" for sort keys %{ $data }; 程式輸出: Number: 1, Times: 1 Number: 2, Times: 1 Number: 3, Times: 2 Number: 4, Times: 1 ※ 引述《hws110 ( only you )》之銘言: : ※ 引述《flu (Crazy Rhythm)》之銘言: : : my $name_of_file_in = "aaa_inc"; #讀入的檔案 : : if (-e $name_of_file_in) : : print "$name_of_file_in exist\n"; : : open (FILE , "<". $name_of_file_in); : : ^^^^^ : : #<FILE>會把讀入的內容寫入$_ : : my @filtered = ( $_ =~ m/^ [\s\t]* (\d+) [\s\t]+ (\d+) /x); : : #下面這行和我的版本不同 : 這裡我有key錯 是原本的 $count_of_si{ $filtered[1] }++; 才對 : 我試了一下 : 發現show出的內容是 : $var1 = 7 : $var2 = 7 : $var3 = 7 : $var1 = 6 : $var2 = 7 : $var3 = 2 : 上行表示1、2、3全部的個數 : 下行表示1、2、3中0的個數 : 我比對檔案的內容是這樣沒錯 : 而我還有個問題是 : 如果我想print出 1全部有幾個,1裡面的0有幾個 : 也就是所有讀入的數字(1.2.3...)個別print出來個數與所含的0的個數 : 那我要怎麼表示呢? : 感謝回答~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.144.19 ※ 編輯: clanguage 來自: 114.37.144.19 (11/08 00:41)
文章代碼(AID): #1GcetQ-6 (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 6 之 10 篇):
1
2
1
1
12年前, 2012/11/05 16:24
1
1
12年前, 2012/11/02 11:33
12年前, 2012/11/01 16:18
文章代碼(AID): #1GcetQ-6 (Perl)