在Perl中打印数组的哈希时出现问题



我正在尝试创建数组的哈希。目前,该阵列的大小仅为1。

$f1="/scratch/aime1/PerlCode/BeforeUpgrade.csv";
$f2="/scratch/aime1/PerlCode/AfterUpgrade.csv";
open(FIN, "< $f1");
while( $my_line = <FIN> )
{
    chomp $my_line;
    my @values = split(',', $my_line);
    my $key = shift @values;
    print "$keyn";     
    print "@valuesn"; 
    $hash1{$key} = @values;
}
close(FIN);

for (keys %hash1) {
     my @value_array = $hash1{$_};
     print "Key is $_ and first Element of array is $value_array[0] n";
}

因此,密钥的形式为/scratch/aime1/idmUpgrade/idmUpgrade,值为其权限,即0755

当我尝试打印这个散列时,输出是:

Key is /scratch/aime1/idmUpgrade/idmUpgrade and first Element of array is 1

数组始终打印为1,而不是0755。

始终在每个perl脚本的顶部包含use strict;use warnings;

您正在将一个数组分配给一个散列键,为此您需要获取一个引用。否则,您只需分配数组计数(即1)

$hash1{$key} = @values;

同样,当你想检索它时,你需要取消引用它:

my @value_array = @{$hash1{$_}};

最新更新