Perl语言入门级问题,求编译一个用于合并两个文本文件的简易程序

程序要求如下:
1,于命令行执行该程序之际 ,输入两个欲结合之文本文件之名称。
例如:“C:\Perl\perl merge.pl A文本.txt B文本.txt”

2,程序将两文件名称标记为标量A和标量B,在程序目录下查找名为标量A和标量B的文件。

3,程序将于两文本内,将到下一个换行符为止的一段文字视为一行内容。

4,作标准输出时,按照“A文本的内容一行,B文本内容一行,空一行”顺序循环输出文本内容。
例如:

苹果
apple
(空行)
香蕉
banana
(空行)
西瓜
watermelon
(空行)

5,若两文本其中一方内容先到达文件尾端(EOF)时,则直到另一方内容到达尾端为止,以空行代替原本位置继续输出。也就是说,最终输出的文件需将两文本的内容一行不剩全部包含进去。

6,当两文本都到达文件尾端(EOF),则结束输出,并退出程序。

7,要求当下列情况发生时返回错误信息:
(1)跟执行命令行一起输入的用来指定要合并的文件名的参数个数不对(不是两个)时
(2)指定的两个文件不存在(或者无法/无权限访问)时

=============================
示例用,以下用[EOF]表示文件尾端
A文本.txt
苹果
香蕉
西瓜
[EOF]
B文本.txt
apple
banana
watermelon
hello
[EOF]
-----------------
要将上面两个文本合并,最终输出C文本如下
C文本.txt
apple
(空行)
香蕉
banana
(空行)
西瓜
watermelon
(空行)
(空行)
hello
(空行)
[EOF]
-------------------------
特别要求:
这个是课堂作业,所以如果用的技巧太高超的话会暴露=_=b
所以请各位大侠用尽可能简单的表达式来书写
应该包含以下要素:
从用户在命令提示符中输入的参数中获得要处理的文件的文件名
比如“C:\users\admin\desktop>perl merge.pl A.txt B.txt”
打开文件的指令(open)
循环处理(while或者for)
用来判定两个文本是否已经到达最后一行的表达式
输出C文本的表达式
关闭打开的文件的表达式
返回错误用的表达式

拜谢

#!/usr/bin/perl
$#ARGV != 2 || die "Number of parameters is not 2(only 2)!\n";
$filea=$ARGV[0];
$fileb=$ARGV[1];
open(CHINESE,$filea)||die "Can't open $filea: $!\n";
$cnta=0;
while(<CHINESE>){
chomp(@reca[$cnta]=$_);
$cnta+=1;
}
close CHINESE;
open(ENGLISH,$fileb)||die "Can't open $fileb: $!\n";
$cntb=0;
while(<ENGLISH>){
chomp(@recb[$cntb])=$_);
$cntb+=1;
}
close ENGLISH;
$max=$cnta>$cntb?$cnta:$cntb;
for($i=0;$i<$max;$i++){
print "@reca[$i]\n@recb[$i]\n\n";
}
温馨提示:答案为网友推荐,仅供参考
相似回答