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