我可以操作单个数组元素,并将对数组的引用添加为哈希值。简单。例如,这可以达到预期的效果:
# split the line into an array
my @array = split;
# convert the second element from hex to dec
$array[1] = hex($array[1]);
# now add the array to a hash
$hash{$name}{ ++$count{$name} } = \@array;
我的问题:是否可以使用匿名数组执行相同的操作?我可以通过以下方式接近:
$hash{$name}{ ++$count{$name} } = [ split ];
但是,这不会操纵匿名数组的第二个索引(将十六进制转换为十进制)。如果可以,怎么做?
答案 0 :(得分:4)
你要求的是这个
my $array = [ split ];
$array->[1] = hex($array->[1]);
$hash{$name}{ ++$count{$name} } = $array;
但这可能不是你的意思。
此外,与使用顺序编号的哈希键相比,您可能最好使用数组哈希,比如
my $array = [ split ];
$array->[1] = hex($array->[1]);
push @{ $hash{$name} }, $array;
您需要一种方法来访问数组以说出您想要修改的内容,但是您可以在将其推送到哈希后修改它,如下所示:
push @{ $hash{$name} }, [split];
$hash{$name}[-1][1] = hex($hash{$name}[-1][1]);
虽然那真的不是很好。或者你可以
push @{ $hash{$name} }, do {
my @array = [split];
$array[1] = hex($array[1]);
\@array;
};
甚至
for ([split]) {
$_->[1] = hex($_->[1]);
push @{ $hash{$name} }, $_;
}