各位高手帮帮忙,两个文本进行对比,去重问题[求助]

各位高手帮帮忙,两个文本进行对比,去重问题[求助]

各位高手帮帮忙,两个文本进行对比,去重问题[求助]

因刚开始学perl,碰到个问题请大家帮帮忙,十分感谢啦~

A文本:
12345
32123
74556
67654
... ...

B文本:
12345
23436
78543
23476
... ...

A文本:里边的数据是已经去重的
B文本:里边的数据也是已经去重的。

A、B文本:这两个文本之间有部分数据是重复的

[b][color=red]要求:创建个新的文本,里边包含A、B两个文本去重后所有的结果[/color][/b]

已经琢磨了2天了,还是不知道怎么写。请各位高手帮帮忙
十分感谢!!!

各位高手,请帮帮忙。.
用hash----把A和B的内.
用hash

把A和B的内容,设置为hash的key

key是不重复的,就可以把多于的去掉
use strict;--use warni.
use strict;
use warnings;

open A, "a.txt" or die "$!";
chomp(my @array_A = <A>);
open B, "b.txt" or die "$!";
chomp(my @array_B = <B>);
my @array = (@array_A, @array_B);
my %hash = map {$array[$_], 1} (0 .. $#array);
$, = "\n";
print keys %hash;
sort -u A B.
sort -u A B
谢谢 alexru ----但如.
谢谢 alexru

但如果数据量非常大,使用数组会吃掉很多内存,不知道还有别的办法吗。谢谢啦
按行读取,hash吃不了多少.
按行读取,hash吃不了多少内存的。
谢谢beckheng ,
这边有3000W的数据,用hash确实不行,对机子的要求比较高撒,不知道还有没有其他的方法。
如果是在 UNIX 平台上,我.
如果是在 UNIX 平台上,我比较喜欢 luoviolet 的方法,不是什么事情都得用 Perl 来做的。如果是 Windows 平台,可以改进一下 alexru 的方法,先打开一个文件,逐行读入,每读入一行,把它作为 key 填入 hash,完了后关掉这个文件,再打开另一个文件,和前一文件同样处理,最后把所有的 key 写入结果文件。我想,因为文件大,所以不管怎样,打开这个文件总要消耗不少内存的。
谢谢 luxyi
还是有些不太明白,能帮忙给个代码吗,谢谢啦谢谢!