题
除了打扰,我正在尝试在我的Perl类中实现一个import
方法,以从适当的hashref数组实例化一个Data
对象,该对象本质上是一个精美的hashref数组。
这是我打算如何使用它的一个示例: 通用标签
我的import
实现如下:
通用标签
令人惊讶的是,Perl在编译期间报告错误(请注意BEGIN
块):
通用标签
perldiag
并没有为发生的事情增加太多的清晰度:
无法祝福非参考值
(F)
只有硬引用可能是有福的。这就是Perl的“执行”方式 对象的封装。看perlobj
。
我什至尝试通过两个单独的步骤初始化对象并添加数据: 通用标签
这导致了以下编译时错误: 通用标签
两个问题:
- 我做的事怎么了?
- 有人可以澄清这个编译时错误的
perldiag
解释吗?
解决方案
import()是提供方法的危险名称,因为Perl有时会为您调用一个名为“ import”的方法。实际上,声明: 通用标签
真正的意思是: 通用标签
在“编译”期间发生。
因此,在有机会使用Perl之前,Perl会将您的import()方法作为类加载机制的一部分进行调用。您应该将import()方法重命名为其他名称(例如import_data),并且应该没问题。
不隶属于 StackOverflow