作者clanguage (C语言)
看板Perl
标题Re: [问题] 同时开启多个档案并一次读一行
时间Thu Oct 3 22:13:16 2013
读入所有档案, 一次读入一行存入 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一直存
: 想请问这要怎麽写
: 谢谢大大
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.191.81
1F:→ xatier:C 语言写 Perl XD 10/07 19:35
2F:→ clanguage:c写腻惹.. 10/08 22:45
3F:→ xatier:XDDD 10/09 09:26