将哈希元素与表元素perl进行比较

时间:2016-02-21 14:11:23

标签: perl optimization hash

我有一个程序比较两个文件的每一行,每行包含一个单词,如果只是读取这两个文件并将数据存入表中,并比较两个表的元素, 第一个文件包含: 直接

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行

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

join <(sort file1) <(sort file2) >result

适用于bash