将数组的哈希转储到文件

时间:2011-05-11 02:07:19

标签: perl

如何将数组的散列转储到文件中?

每个哈希键都是文件夹的名称,数组是文件夹中列出的所有文件。

这是我正在做的事情,

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;

2 个答案:

答案 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};