我正在尝试检查散列中文件中是否存在单词,如果是,则显示相应的散列键和值。
到目前为止,我已经能够使用数组@motcherches
来执行此操作。这些值在脚本中给出。
我找不到从外部文件(此处为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必须更加清晰,以防止它出现。 Izaguirre让Mahrez尝试了自己的药物,尽管莱斯特边锋太过轻易放弃了,但他的所有目的都击败了左翼。 到目前为止,克劳迪奥·拉涅利将对他从他身边看到的东西感到高兴。
=============================================== ==============================
预期产出:
Zieler player
Mahrez player
Ranieri coach
答案 0 :(得分:1)
一切都很好,但在程序中添加chomp
while ( my $line = <FILE>)
{
chomp($line);
my %elements = split(" ",$line);
答案 1 :(得分: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