我有一个程序比较两个文件的每一行,每行包含一个单词,如果只是读取这两个文件并将数据存入表中,并比较两个表的元素, 第一个文件包含: 直接
work
week
belief time
saturday
wagon
australia
sunday
french
...
,第二个文件包含
firepower
malaise
bryson
wagon
dalglish
french
...
这需要很长时间来比较文件,所以我提出了另一个解决方案,但这不起作用
#!/usr/bin/perl
use strict;
use warnings;
open( FIC, $ARGV[0] );
open( FICC, $ARGV[1] );
print "choose the name of the file\n";
chomp( my $fic2 = <STDIN> );
open( FIC2, ">$fic2" );
my $i=0;
my $j=0;
my @b=();
my %stops;
while (<FIC>) #read each line into $_
{
# Remove newline from $_
chomp;
$_ =~ s/\s+$//;
$stops{$_} = $i; # add the line to
$i++;
}
close FIC;
while (<FICC>) {
my $ligne = $_;
$ligne =~ s/\s+$//;
$b[$i] = lc($ligne);
# $b contain the data
$i++;
}
foreach my $che (@b) {
chomp($che);
print FIC2 $che;
print FIC2 " ";
print FIC2 $stops{"$che"}; print FIC2 "\n";
#this returns nothing
}
问题发生在this command $stop{"$che"};
,如果elment不存在于hash%stop中,则会返回一个整数并出现错误
在印刷品中使用初始化值c:/ats2/hash.pl第44行,第185B2行
答案 0 :(得分:0)
这是你想要的吗?
join <(sort file1) <(sort file2) >result
适用于bash
。