gpt4 book ai didi

arrays - 在 Perl 中存储和读取文件中的哈希值和数组

转载 作者:行者123 更新时间:2023-12-02 04:22:49 25 4
gpt4 key购买 nike

我是一个菜鸟。我需要一些关于如何在 perl 下保存和读取数据的基本知识。假设保存一个哈希和一个数组。应使用什么格式(扩展名)的文件? TXT?到目前为止我只能将所有内容保存为字符串 print FILE %hash并将它们作为字符串读回 print <FILE> 。如果我需要文件中的函数哈希和数组输入,我该怎么办?如何将它们放回哈希和数组?

最佳答案

您正在寻找数据序列化。强大的流行选择是 Sereal , JSON ::XSYAML::XS 。鲜为人知的格式有:ASN.1 , Avro , BERT , BSON , CBOR , JSYNC , MessagePack , Protocol Buffers , Thrift .

其他经常提到的选择是 StorableData::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', { binmode => ':raw' }, $yaml);
}
{
my $yaml = read_file('dump.yml', { binmode => ':raw' });
%hash = %{ Load $yaml };
}
<小时/>

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

<小时/>

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

关于arrays - 在 Perl 中存储和读取文件中的哈希值和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com