perl - 哪些推荐的 Perl 模块可以序列化 Moose 对象?

标签 perl serialization yaml moose coderef

我通常将 Storablenstore 一起使用,但现在我有一个 module具有 CODE 且显然 Storable 不喜欢这样。

我找到了 YAML (以及 I can't really get to workYAML::XS )。 我还尝试了一些 MooseX::Storage没有取得太大成功。

还有其他选择吗? 您会推荐什么?

最佳答案

您可以使用 Data::Dumper 转储代码引用将 $Data::Dumper::Deparse 设置为 true 值后,但这仅用于调试目的,不适用于序列化。

我建议您回去看看为什么 MooseX::Storage 不适合您,因为作者非常努力地为 Moose 对象序列化提供一个抽象良好且强大的解决方案。

<小时/>

更新:看起来您在序列化 _offset_sub 属性时遇到了问题,如 this question 中所述。 。由于该属性有一个构建器,并且它的构造相当简单(它只是查看另一个属性的当前值),因此您根本不需要序列化它——当您反序列化对象并想要再次使用它时,第一次调用 $this->offset 时将调用构建器。因此,您应该能够将其标记为“不序列化”:

use MooseX::Storage;

has '_offset_sub' => (
    is       => 'ro',
    isa      => 'CodeRef',
    traits   => [ 'DoNotSerialize' ],
    lazy     => 1,
    builder  => '_build_offset_sub',
    init_arg => undef,
);

最后,这有点正交,但您可以折叠偏移并 使用原生属性“Code”特征将 _offset_sub 属性组合在一起:

has offset => (
    is          => 'bare',
    isa         => 'CodeRef',
    traits      => [ qw(Code DoNotSerialize) ],
    lazy        => 1,
    builder     => '_build_offset',
    init_arg    => undef,
    handles     => {
        offset  => 'execute_method',
    },
);

sub _build_offset {
    my ($self) = @_;

    # same as previous _build_offset_sub...
}

关于perl - 哪些推荐的 Perl 模块可以序列化 Moose 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999875/

相关文章:

c# - Json.net getter 属性未序列化

java - 序列化 HashMap 的快速方法

azure - Azure Pipeline 模板中的动态变量

java - 从命名的 yaml 属性列表中读取字符串数组作为常量?

perl - "Redundant argument in printf"警告

perl - 格式化日期时间输出

windows - Perl 5.12 使用为 Perl 5.6 创建的 DLL 加载模块

regex - 用watch中的/v替换Yahoo Pipes中的Youtube URL?

python - XX 处的 Django 序列化程序 ManyRelatedManager 对象不是 JSON 可序列化的

emacs - 输入缩进上一行?