【发布时间】:2018-11-28 09:39:18
【问题描述】:
我需要评估一系列要转换为数组哈希的字符串。考虑到,在这种情况下,我想将一个数组添加到已经存储数组的哈希条目中。我需要得到以下哈希:
ConfigurationHash{'Editor'} = (John, Mary, Jane, Peter)
我已将我的代码精简为这个示例:
use strict;
use warnings;
my %ConfigurationHash;
my $String1 = "Editor=John,Mary";
my $String2 = "Editor=Jane,Peter";
my @Line1 = split ("=", $String1);
my @Line2 = split ("=", $String2);
my $Variable1 = @Line1[0];
my $Value1 = @Line1[1];
my $Variable2 = @Line2[0];
my $Value2 = @Line2[1];
my @Values1Array = split(",", $Value1);
my @Values2Array = split(",", $Value2);
if ( ! exists $ConfigurationHash{$Variable1} ) {
$ConfigurationHash{$Variable1} = @Values1Array;
}
else {
push (@ConfigurationHash{$Variable1}, @Values1Array);
}
这会产生以下错误:
现在禁止在 ./test.pl 第 25 行“@Values1Array)”附近对标量进行实验性推送 ./test.pl 的执行由于编译错误而中止。
我知道问题在于引用/取消引用,但我对 perl 的了解太基础了,以至于我无法自己弄清楚如何到达那里。
谁能教我怎么做?如果您能告诉我如何在创建后迭代哈希中的数组值,我也将不胜感激。
【问题讨论】:
-
您似乎误解了一些数据结构基础知识。我建议你阅读perldoc.perl.org/perldsc.html
-
“哈希中的一个条目,它已经存储了一个数组” 我不明白你的这部分问题。您的
%ConfigurationHash最初为空。