【发布时间】:2014-01-23 09:34:03
【问题描述】:
我基本上想在两个文本文件(CSV 样式)之间进行无序差异,我比较前两列中的字段(我不关心第三列的值)。然后我打印出 file1.txt 具有但在 file2.txt 中不存在的值,反之亦然,file2.txt 与 file1.txt 相比。
file1.txt:
cat,val 1,43432
cat,val 2,4342
dog,value,23
cat2,value,2222
hedgehog,input,233
file2.txt:
cat2,value,312
cat,val 2,11
cat,val 3,22
dog,value,23
hedgehog,input,2145
bird,output,9999
输出会是这样的:
file1.txt:
cat,val 1,43432
file2.txt:
cat,val 3,22
bird,output,9999
我是 Perl 的新手,所以目前我不了解一些更好、更不丑陋的方法来实现这一点。感谢您的帮助。
当前代码:
#!/usr/bin/perl -w
use Cwd;
use strict;
use Data::Dumper;
use Getopt::Long;
my $myName = 'MyDiff.pl';
my $usage = "$myName is blah blah blah";
#retreive the command line options, set up the environment
use vars qw($file1 $file2);
#grab the specified values or exit program
GetOptions("file1=s" => \$file1,
"file2=s" => \$file2)
or die $usage;
( $file1 and $file2 ) or die $usage;
open (FH, "< $file1") or die "Can't open $file1 for read: $!";
my @array1 = <FH>;
close FH or die "Cannot close $file1: $!";
open (FH, "< $file2") or die "Can't open $file2 for read: $!";
my @array2 = <FH>;
close FH or die "Cannot close $file2: $!";
#...do a sort and match
【问题讨论】: