如何将数组的散列转储到文件中?
每个哈希键都是文件夹的名称,数组是文件夹中列出的所有文件。
这是我正在做的事情,
open OUTFILE, "> output.txt" or die $!;
foreach my $key (keys %folder_structure) {
print OUTFILE "$key\n";
foreach my $line (@{$folder_structure{$key}}) {
print OUTFILE "$line\n";
}
}
close OUTFILE;
答案 0 :(得分:7)
如果您对输出格式没有任何特定要求,最简单的方法是使用Data :: Dumper:
use strict;
use Data::Dumper;
open OUTFILE, "> output.txt" or die $1;
print OUTFILE Dumper \%folder_structure;
close OUTFILE;
编辑:根据评论,Dumper
正在传递对哈希的引用,而不是哈希本身。
Data :: Dumper模块有一些控制输出的设置,你可以在CPAN page上阅读。
答案 1 :(得分:1)
自v5.8以来Perl核心发行版中包含的Storable.pm模块,以及CPAN提供的模块,旨在让您“冻结”和“解冻”复杂的数据结构,将它们保存到文件中,以及稍后检索它们。
use Storable;
my %structure = (foo => 1, bar => 3);
store(\%structure, 'output.storable');
将其检索回内存:
my %structure = %{retrieve('output.storable')};
或许更清晰:
my $structure_hashref = retrieve('output.storable');
my %original_structure = %{$structure_hashref};