2016-07-29 148 views
1

我试图从哈希文件中检查单词的存在性,并且如果是,则显示相应的哈希键和值。Perl将数组内容与哈希值进行比较

到目前为止,我已经可以通过这个数组来完成这个值,这个值在脚本中给出。

我无法找到一种方法来从外部文件(此处为FILEDEUX)将这些数组的值赋予这些数组。 你能指点我正确的方向吗?

(请不要犹豫,纠正我解释我的问题的方式。)

#!/usr/bin/perl 
use v5.10; 
use strict; 
use warnings; 
my $hashtable = $ARGV[0]; 
my $textecompare = $ARGV[1]; 
open FILE,"<$hashtable" or die "Could not open $hashtable: $!\n"; 
open FILEDEUX,"<$textecompare" or die "Could not open $textecompare: $!\n"; 


    while (my $line = <FILE>) 
    { 
     chomp($line); 
     my %elements = split(" ",$line); 

     my @motcherches = qw/blop blup blip blap/; 
     foreach my $motcherches (@motcherches) { 

      while ((my $key, my $value) = each (%elements)) { 
       # Check if element is in hash : 
       say "$key , $value" if (exists $elements{$motcherches}) ; 
      } 
     } 
    } 

close FILE; 
close FILEDEUX; 

编辑:例输入

FILE(转化成%elements哈希)

Zieler player 
Chilwell player 
Ulloa player 
Mahrez player 
Ranieri coach 

= ================================================== =========================

FILEDEUX(转化成motcherches阵列)

之一,保存很快接踵而至,这一次Zieler必须是清晰一点,以保持它。 虽然莱切斯特的边锋很容易就放弃了,但伊扎格雷给了马赫雷斯一个尝试,他击败了他的左翼,尽管莱斯特边锋放弃了。克劳迪奥拉涅利将会很满意他迄今在他身边所看到的。

============================================== ===============================

预期输出:

Zieler player 
Mahrez player 
Ranieri coach 
+1

'使用warnings'类似于'-w'你的家当线。你只需要其中的一个(并且大多数人会使用“使用警告”)。 –

+0

错过了,谢谢! – Azaghal

回答

1
use strict; 
use warnings; 
use feature qw/ say /; 

# Read in your paragraph of text here: 
open my $text, '<', 'in.txt' or die $!; 

my %data; 
while(<$text>){ 
    chomp; 
    $data{$_}++ for split; # by default split splits on ' ' 
} 

my %players; 
while(<DATA>){ 
    chomp; 
    my @field = split; 
    say if $data{$field[0]}; 
} 


__DATA__ 
Zieler player 
Chilwell player 
Ulloa player 
Mahrez player 
Ranieri coach 
+0

由于它的伟大工程! – Azaghal

+1

@Baptiste - 伟大的。我要保持答案是(拒绝你的编辑建议),只是因为使用'__DATA__'在脚本中读入数据是如此普遍 – fugu

1

一切都很好,但加在程序中chomp

while (my $line = <FILE>) 
    { 
    chomp($line); 
    my %elements = split(" ",$line); 
+0

我不知道你明白我的问题吧:我正在挣扎是 '我@motcherches = QW/blop BLUP昙花一现BLAP /;'行: 它的伟大工程,因为它是,但我想不要有“blop BLUP昙花一现BLAP”从一个文件中的值,而是的话,因为我与其他文件一样。我到现在为止尝试过的错误。 – Azaghal

+0

@Baptiste请添加示例输入。 – mkHun

+0

我编辑了我原来的帖子。 – Azaghal