You are looking for serialization . Popular options that are reliable are Sereal , JSON :: XS and YAML :: XS , Little-known formats: ASN.1 , Avro , BERT , BSON , CBOR , JSYNC , MessagePack , Protocol buffers , Thrift .
Other commonly mentioned options are: Storable and Data :: Dumper (or similar) / eval , but I cannot recommend them because the saved format depends on the version of Perl, and eval unsafe because it runs arbitrary code. As of 2012, the analysis of the Data :: Undump partition did not go very far. I also cannot recommend using XML because it does not display Perl data types well and there are several competing / incompatible schemes for translating between XML and data.
Code examples (testing):
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 }; }
The next step from here is to save the objects .
Also read: Serializers for Perl: when to use what
daxim
source share