加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 在Perl中的文件中存储和读取哈希和数组

发布时间:2020-12-15 21:39:00 所属栏目:大数据 来源:网络整理
导读:我是一个菜鸟.我需要一些关于如何在perl下保存和读取数据的基本知识.说保存哈希和数组.应该使用什么格式(扩展名)的文件?文本?到目前为止,我只能将所有内容保存为stringprint FILE%hash并将其作为stringprint FILE读回.如果我需要来自文件的函数哈希和数组
我是一个菜鸟.我需要一些关于如何在perl下保存和读取数据的基本知识.说保存哈希和数组.应该使用什么格式(扩展名)的文件?文本?到目前为止,我只能将所有内容保存为stringprint FILE%hash并将其作为stringprint< FILE>读回.如果我需要来自文件的函数哈希和数组输入,我该怎么办?如何将它们放回哈希和数组?

解决方法

您正在寻找数据序列化.稳健的热门选择是 Sereal,MessagePack7002和 YAML::XS.鲜为人知的格式是: ASN.1,Avro,BERT,BSON,CBOR,JSYNC,MessagePack,Protocol Buffers,Thrift.

其他经常提到的选择是Storable和Data::Dumper(或类似)/ eval,但我不推荐它们,因为Storable的格式依赖于Perl版本,而eval是不安全的,因为它执行任意代码.截至2012年,解析对应部分Data::Undump尚未进展很远.我也不建议使用XML,因为它没有很好地映射Perl数据类型,并且存在多个竞争/不兼容的模式如何在XML和数据之间进行转换.

代码示例(已测试):

use JSON::XS qw(encode_json decode_json);
use File::Slurp qw(read_file write_file);
my %hash;
{
    my $json = encode_json %hash;
    write_file('dump.json',{ binmode => ':raw' },$json);
}
{
    my $json = read_file('dump.json',{ binmode => ':raw' });
    %hash = %{ decode_json $json };
}
use YAML::XS qw(Load Dump);
use File::Slurp qw(read_file write_file);
my %hash;
{
    my $yaml = Dump %hash;
    write_file('dump.yml',$yaml);
}
{
    my $yaml = read_file('dump.yml',{ binmode => ':raw' });
    %hash = %{ Load $yaml };
}

从这里开始的下一步是object persistence.

另请阅读:Serializers for Perl: when to use what

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读