【发布时间】:2019-06-29 03:40:06
【问题描述】:
我正在尝试使用来自make perl shout when trying to access undefined hash key 的代码,但它不起作用。
我认为tie 在过去 10 年的工作方式发生了一些变化。
我得到的错误是:
Safe::Hash must define either a TIEHASH() or a new() method at /home/bennett/work/stock/Indicator.pm line 97.
我只需要它来处理我使用的大约 5% 的哈希值,并且我希望使用不会改变接口的东西(即$foo{bar})。也就是说,我不想使用Moose 或涉及访问器方法的东西。
原因如下:我想将其打开以进行调试和开发,否则将其关闭。程序和计算机本身就足够慢了。
欢迎提供任何已修复的代码(参见上面的链接)或其他解决方案。
这是为 x86_64-Linux-thread-multi 构建的 Perl 5,版本 16,Subversion 3 (v5.16.3)
【问题讨论】:
-
不,
tie的工作方式“没有任何变化”。链接答案中的代码仍然有效。错误在于您的修改。你忘记加载 Tie::Hash 了吗? -
当。不假思索,我将
require;push @ISA更改为use parent。显然它们并不像我想象的那样“相同”。谢谢。 -
这将使 Tie::Hash 成为父级,而不是 Tie::StdHash
-
噢!好吧,这只是我的草率阅读。