Dav*_*d B 2 perl serialization yaml moose
我试图用一些(Moose)对象序列化YAML- 只需使用YAML Dump()和Load().加载序列化对象后,在我添加use带有原始模块名称的语句之后,它才"正常工作" .如果我不使用use我不会得到任何错误,直到我尝试调用一些对象方法,然后它会呱呱叫它找不到这个方法.
我认为加载所需的类是反序列化器工作的一部分,如果我没弄错的话Storable确实是自己做的.那么YAML有什么问题吗?
另外,我注意到模块的版本没有与序列化对象一起存储.有什么方法可以添加吗?
序列化是针对数据而非行为.Perl中的对象只是一个有福的参考.YAML和Storable序列化并存储数据(包括祝福),但这只是类的名称,而不是类本身.在反序列化对象时,您负责加载类(以及任何父类).
在一般情况下,序列化程序无法加载类.虽然约定是包(类)==文件名,但它不是必需的.模块可以定义它想要的任何包名称,也可以定义多个包.例如,我可能会写定义的类模块名为AbstractSyntaxTree.pm Node,Branch和Leaf.