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

时间:2014-04-16 05:48:45

标签: 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 "$key\n";     
    print "@values\n"; 
    $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。

1 个答案:

答案 0 :(得分:2)

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

您正在为哈希键分配一个数组,为此您需要参考。否则,您只需指定数组计数(即1)

$hash1{$key} = \@values;

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

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