perl - 引用键的参数类型必须是 unbless

标签 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.

可以重写该行代码以使其正常工作吗?

最佳答案

$TestResultsData{$currPlatform}{$currDate}{failedtests} 的值是一个受祝福的哈希引用。 keys 胆怯地拒绝对受祝福的 hashref 进行操作,因为这会破坏封装和重载的幻觉。

(旧版本的 Perl 根本不接受哈希引用 - 您需要向它传递一个正确的哈希值。)

尝试使用以下方法手动将 hashref 取消引用为哈希:

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

关于perl - 引用键的参数类型必须是 unbless,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26426021/

相关文章:

Perl - 终止从管道启动的正在进行的进程

perl - 角色角色的驼鹿角色

regex - 精通正则表达式书中的 Perl 替换示例对我不起作用

perl - 将 Perl 嵌入 html 的最简单方法

javascript - 我该如何解决 Uncaught TypeError : Cannot read property 'top' of undefined

Perl 内联 C : Passing Arrayref to C Function

Perl:创建散列的散列,最后一个键作为对数组的引用