我正在尝试创建一个数组哈希。目前,该阵列的大小仅为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。
答案 0 :(得分:2)
始终在每个perl脚本的顶部包含use strict;
和use warnings;
。
您正在为哈希键分配一个数组,为此您需要参考。否则,您只需指定数组计数(即1)
$hash1{$key} = \@values;
同样,当你想要检索它时,你需要取消引用它:
my @value_array = @{$hash1{$_}};