【发布时间】:2013-03-14 04:04:03
【问题描述】:
我在弄清楚如何根据文本输入在 perl 中创建嵌套哈希时遇到了一些麻烦。
我需要这样的东西
my % hash = {
key1 => \%inner-hash,
key2 => \%inner-hash2
}
但是我的问题是我不知道先验有多少内部哈希。为此,我编写了以下一段 sn-p 来测试是否可以在循环中创建 str 变量并将其引用存储在数组中并稍后取消引用。
{
if($line =~ m/^Limit\s+$mc_lim\s+$date_time_lim\s+$float_val\s+$mc\s+$middle_junk\s+$limit \s+$value/) {
my $str = $1 . ' ' . $2 . ' ' . $7;
push (@test_array_reference, \$str);
}
}
foreach (@test_array_reference) {
say $$_;
}
Perl 死于非标量运行时错误。我在这里有点迷路了。任何帮助将不胜感激。
【问题讨论】:
-
该代码显然有问题(尽管我认为创建对标量的引用不会对您的原始问题有所帮助)。您能否包含来自 Perl 的完整逐字错误消息?
-
要在任意深度的散列中存储值,请参阅 Data::Diver。您的第一个 %hash 分配很糟糕;要分配的列表应该在
()而不是{}。您能否展示一个产生非标量错误的完整示例? -
不是 ./BadMailClassLimit.pl 第 43 行,
第 9817388 行的 SCALAR 引用。