Re: [問題] 同時開啟多個檔案並一次讀一行

作者: clanguage (C語言)   2013-10-03 22:13:16
讀入所有檔案, 一次讀入一行存入 record hash 中
然後照 key 排序, 或照 values 排序後印出
1 #!/usr/bin/perl
2 foreach (@ARGV) {
3 open $fhs->{$_}, "<", $_ or die;
4 }
5
6 while (keys %$fhs) {
7 foreach (keys %$fhs) {
8 $fh = $fhs->{$_};
9 chomp(($line = <$fh>));
10 close $fh and delete($fhs->{$_}) and next if length $line == 0;
11 ($header, $data) = split(/\s+/, $line);
12 $record->{$header} = $data;
13 }
14 };
15
16 print "$_ -> $record->{$_}\n"
17 foreach (sort keys %$record);
18 print "$_ -> $record->{$_}\n"
19 foreach (sort {$record->{$a} <=> $record->{$b} } keys %$record);
b01:~/perl > ./test2.pl 1.txt 2.txt 3.txt
A1 -> 100
A2 -> 200
A3 -> 300
A4 -> 400
B1 -> 1
B2 -> 2
B3 -> 3
C1 -> 10
C2 -> 20
C3 -> 30
B1 -> 1
B2 -> 2
B3 -> 3
C1 -> 10
C2 -> 20
C3 -> 30
A1 -> 100
A2 -> 200
A3 -> 300
A4 -> 400
※ 引述《kezjiay (好想出國)》之銘言:
: 每份檔案的內容是header跟data,並且已經根據header排序好
: ex. A1 50
: B1 40
: C1 60
: 從argv輸入檔案名稱ex. Input1.txt Input2.txt Input3.txt
: 依序從檔案讀取一列把header當key跟data存入hash
: ex從Input1.txt讀一行存入Input2.txt讀一行存入Input3.txt讀一行存入
: 接著再回到Input1再讀一行然後Input2,Input3一直存
: 想請問這要怎麼寫
: 謝謝大大
作者: xatier (一切重來就好了...)   0000-00-00 00:00:00
C 語言寫 Perl XD
作者: clanguage (C語言)   0000-00-00 00:00:00
c寫膩惹..
作者: xatier (一切重來就好了...)   0000-00-00 00:00:00
XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com