perl 脚本学习-----两个文件排序之后输入到一个文件

举个例子:

file1是这样的:
11111111111111
22222222222222
55555555555555
66666666666666

file2是这样的:
33333333333333
44444444444444
77777777777777
88888888888888

而我想得到的结果file3是:
11111111111111
22222222222222
33333333333333
44444444444444
55555555555555
66666666666666
77777777777777
88888888888888

 

程序举例:

open IN1,'<',$file1;
open IN2,'<',$file2;
open OUT,'>',$file_out;
 
my $line1 = <IN1>;
my $line2 = <IN2>;
 
while (1) {
   
  # do this, when a file reaches its end
  if (!defined $line1) {
    # file1 ended, write lasting parts of file2
    print OUT $line2;
    while (<IN2>) { print OUT }
    last;
  }
   
  if (!defined $line2) {
    # file2 ended, vise versa
    print OUT $line1;
    while (<IN1>) { print OUT }
    last;
  }
 
  # the main compare
  if ($line1<$line2) {
    print OUT $line1;
    $line1 = <IN1>;
  }
  elsif ($line2<$line1) {
    print OUT $line2;
    $line2 = <IN2>;
  }
  else {
    die "EXCEPTION: two identical lines: <$line1> and <$line2>";
  }
}
程序局限:
file1 和 file2本身必须是排序完之后的。
posted @ 2013-11-19 11:12  虾米的虾皮  阅读(334)  评论(0编辑  收藏  举报