除了打扰,我正在尝试在我的Perl类中实现一个import方法,以从适当的hashref数组实例化一个Data对象,该对象本质上是一个精美的hashref数组。

这是我打算如何使用它的一个示例: 通用标签


我的import实现如下: 通用标签

令人惊讶的是,Perl在编译期间报告错误(请注意BEGIN块): 通用标签

perldiag 并没有为发生的事情增加太多的清晰度:

无法祝福非参考值

(F)只有硬引用可能是有福的。这就是Perl的“执行”方式 对象的封装。看 perlobj


我什至尝试通过两个单独的步骤初始化对象并添加数据: 通用标签

这导致了以下编译时错误: 通用标签


两个问题:

  1. 我做的事怎么了?
  2. 有人可以澄清这个编译时错误的perldiag解释吗?
有帮助吗?

解决方案

import()是提供方法的危险名称,因为Perl有时会为您调用一个名为“ import”的方法。实际上,声明: 通用标签

真正的意思是: 通用标签

在“编译”期间发生。

因此,在有机会使用Perl之前,Perl会将您的import()方法作为类加载机制的一部分进行调用。您应该将import()方法重命名为其他名称(例如import_data),并且应该没问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top