引用键的参数类型必须是不可见的

时间:2014-10-17 13:23:17

标签: perl hashref arrayref

我是perl的新手,我被赋予了维护网页的任务。我发现了一个我不知道如何解决的错误。

perl脚本在以下代码上停止。

my @failedTests = (sort(keys ($TestResultsData{$currPlatform}{$currDate}{failedtests})));
while ( @failedTests )
{
 ...

错误消息是:

Type of argument to keys on reference must be unblessed hashref or arrayref.

可以重写那行代码以使其有效吗?

1 个答案:

答案 0 :(得分:3)

$TestResultsData{$currPlatform}{$currDate}{failedtests}的值是一个有福的hashref。 keys懦弱地拒绝对有福的hashref进行操作,因为它会破坏封装和重载的错觉。

(旧版本的Perl根本不会接受hashref - 你需要传递一个正确的哈希值。)

尝试使用以下方法手动将hashref解引用到哈希:

my @failedtests = sort keys %{ $TestResultsData{$currPlatform}{$currDate}{failedtests} };