perl 语言高手请进~~~ 编程

来源:百度知道 编辑:UC知道 时间:2024/09/22 19:44:00
比较两个文件。txt 两个文件有多少行,多少个单词 ,多少个字母, 英语文档,并且输出两个文档这些信息的不同, 还要在哪一行这两个文件是不同的~

txt1:
ni hao
ni shi shui
ni yi wei ni shi shui

txt2
ni hao
wo shi shui
Wo yi wei wo shi shui

将这两个文件作比较
我给的两个文件只是例子,我要比较的会是两个比较复杂的文件,几十行并且夹杂很多符号, 应该是用 diff 语句比较~!

答复补充:
你可以跑一下程序,看结果怎样

含标点符号也没问题,我原来以为这会影响单词数的统计,因为split分割一般不会用很复杂的语法,我这里只用了空白来分隔,但是又一想你又不需要得到每一个确切的单词,比如说文本中一行是: Hello World!那么数组中存的两个单词分别是 Hello和World!但单词统计仍不会出错。字符统计则统计的是包含标点符号的数目。

我写了段script,在我的机子上可以跑,如果你的txt中不含标点符号,这样就可以了,如果含标点则要修改script

Linux 上 在txt和script所在路径下用命令: parsetxt.pl txt1.txt txt2.txt

内容:

#!/usr/bin/perl

#for a zhidaoquestion
#Usage: parsetxt.pl txt1.txt txt2.txt
use strict;
use warnings;

($#ARGV == 1) || die "Usage: $0 <.txt file> <.txt file>\n";

my $txt1 = $ARGV[0];
my $txt2 = $ARGV[1];
my @diff;
my @txt1;
my @txt2;
my $num_words1;
my $num_words2;
my $num_lines1;
my $num_lines2;
my $num_characters1;
my $num_characters2;
my $line;

open (TXT1, $txt1) || die "Can't open input $txt1 file\n";
while (defined($line = <TXT1>)){
chomp($line);