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

作者: clanguage (C語言)   2012-11-08 00:35:35
老實說你的敘述我看不太懂,
你應該是把右邊那排資料當作號碼, 左邊的資料當作出現次數
然後把出現的次數全部加總對吧
以下依據我的理解實作, 我就不讀檔了
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的個數
: 那我要怎麼表示呢?
: 感謝回答~

Links booklink

Contact Us: admin [ a t ] ucptt.com