Perl Can';t调用方法";dclone“;论无删减参照
我得到以下错误Perl Can';t调用方法";dclone“;论无删减参照,perl,Perl,我得到以下错误 "Can't call method "dclone" on unblessed reference" 什么是“无版权引用””以及如何更正。请参考以下代码。代码 use strict; use warnings;
"Can't call method "dclone" on unblessed reference"
什么是“无版权引用””以及如何更正。请参考以下代码。代码
use strict;
use warnings;
use YAML::XS 'LoadFile';
use Data::Dumper;
my $config = LoadFile('config.yml');
my $record1 = $config->{Record1};
print "record1: $record1\n";
print Dumper($config);
$config->{Record2} = dclone $config->{Record1};
print Dumper($config);
以下是输出
record1: ARRAY(0x275fa88)
$VAR1 = {
'Record1' => [
{
'Name' => 'Karun'
},
{
'Phone' => 123
}
]
};
Can't call method "dclone" on unblessed reference at p1.pl line 11.
dclone
不是Perl中的核心函数,也不是由您导入的模块提供的。但它是由提供的。你可能失踪了
use Storable 'dclone';
dclone
不是Perl中的核心函数,也不是由您导入的模块提供的。但它是由提供的。你可能失踪了
use Storable 'dclone';
在不知道dclone是函数的情况下,perl将代码解析为类或对象上方法dclone的间接对象调用
$config->{Record1}
,就好像它是$config->{Record1}->dclone
。添加了parens(dclone(dclone($config->{Record1})
),它将给出一个更有用的“未定义的子例程&main::dclone called”错误。在不知道dclone是函数的情况下,perl将代码解析为类或对象上方法dclone的间接对象调用$config->{Record1}
,就好像它是$config->{Record1}->dclone
。添加了parens(dclone($config->{Record1})
),它将给出一个更有用的“未定义的子例程&main::dclone called”错误。