相关疑难解决方法(0)

在请求一个arrayref时,perl中绑定哈希的奇怪行为

我试图按照跟踪变量用法的顺序绑定哈希(或hashref).

一切都适用于简单的情况,但当我尝试在一些真正的代码上使用我的模块时,我遇到了这个错误:

hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)
Run Code Online (Sandbox Code Playgroud)

我使用以下代码复制了错误:

use Tie::Hash::Usages;
use JSON;

my @arr = (
    {
        key1 => "ac",
        key2 => 12,
        key3 => 12
    },        
);
my %tied_hash;


tie %tied_hash, 'Tie::Hash::Usages';

$tied_hash{key1} = \@arr;

my @val = $tied_hash{key1};
print encode_json(\@val)."\n\n"; #this works

print encode_json($tied_hash{key1}); #this doesn't
Run Code Online (Sandbox Code Playgroud)

相同的代码使用普通哈希.

在第二种情况下我也需要这个工作,代码库是巨大的,我不想改变它,或怀疑某些地方某些东西在某些特定情况下不起作用.

Usages.pm(简体)

package Tie::Hash::Usages;
use strict;
use warnings;

use Tie::Hash;

use vars qw(@ISA);

@ISA = qw(Tie::StdHash);

sub TIEHASH {

    my ($class, $tracker, $filename) …
Run Code Online (Sandbox Code Playgroud)

perl tie

5
推荐指数
1
解决办法
574
查看次数

标签 统计

perl ×1

tie ×1