继续获取“需要显式包名称”错误

时间:2013-02-14 00:23:21

标签: perl

所以这个错误让我很生气。我已经阅读了很多关于这个错误的论坛和很多问题。但我尝试的一切似乎并没有解决所有问题。

我有严格的,这就是我的代码:

my $resultsHash;

my $exResults = Array of Results

foreach my $exData (@$separateArray){ 

push ( @{ $resultsHash }, $exData);
push ( @{ $resultsHash{$exData} }, @$exResults);

}

我做错了什么?有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

你所写的不是Perl,很长一段时间。

必须使用use strictuse warnings开始每个程序,并在其第一个使用点声明每个变量。

您有多个变量

例如,声明

push @{ $resultsHash }, $exData

$resultsHash视为对数组的引用。但

push @{ $resultsHash{$exData} }, @$exResults

使用%resultsHash,它是独立的对象。

Array of Results也不是Perl。你似乎是从$exResults推出,好像它是对数组的引用,但它是如何填充的?

如果您更好地解释您的代码,我相信我们可以帮助您。

答案 1 :(得分:0)

在您显示的代码中,您正在使用但未声明%resultsHash$separateArray;声明或以其他方式修复它们。

您究竟想让$resultsHash / %resultsHash最终看起来像什么?

更新:听起来你想要声明%resultsHash,而不是$ resultsHash,然后执行:

$resultsHash{$exData} = $exResults

而不是推动?