【问题标题】:Can't call method "dclone" on unblessed reference无法在 unblessed 引用上调用方法“dclone”
【发布时间】:2019-04-30 09:26:15
【问题描述】:

我收到以下错误。

"Can't call method "dclone" on unblessed reference"

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.

【问题讨论】:

    标签: perl


    【解决方案1】:

    dclone 不是 Perl 的核心功能,也不是您导入的模块提供的。它是由Storable 提供的。你可能错过了

    use Storable 'dclone';
    

    【讨论】:

    • 在不知道 dclone 是一个函数的情况下,perl 将代码解析为对类或对象 $config->{Record1} 的方法 dclone 的间接对象调用,就好像它是 $config->{Record1}->dclone。添加括号 (dclone($config->{Record1})) 后,它会提供更有用的“未定义子例程 &main::dclone called”错误。
    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2017-06-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多