我是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/

10-12 23:44