我是Perl的新手,他试图找出实现此目的的最佳方法,但目前尚不确定语法。
到目前为止,我的脚本正在从HDFS读取文件,该文件包含多种可能的键,值对。
例如,假设我的键范围为A,B,C,D,E
我正在读取的文件将以换行符分隔,如下所示:
A,50
C,30
在我的脚本中,我想读取文件并将变量分配给相应的值,如果不存在任何变量,我想将其分配为零值。
因此,在脚本末尾,我希望输出显示如下:
A=50,B=0,C=30,D=0,E=0
以我对Perl的有限了解,我想知道如何建立最佳循环来收集信息,就像这样吗?我具有读取文件的功能,但没有任何功能可将指标收集到某种Array或Hash分组中。
最佳答案
use strict;
use warnings;
my @keys = qw(A B C D E);
open my $fh, '<', $filename_from_hdfs
or die "$!";
my %mapping;
while ( my $line = readline($fh) ) {
chomp($line);
my ($key, $value) = split /,/, $line;
$mapping{$key} = $value;
}
# zero out keys with no value
$mapping{$_} //= 0 foreach @keys;
print join(',', map { "$_=$mapping{$_}" } sort keys %mapping), "\n";
关于arrays - Hadoop的Perl哈希/阵列实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37492134/