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本身必须是排序完之后的。