Perl 将数组哈希转储到文件

Perl 将数组哈希转储到文件,perl,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 "

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

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

这是我正在做的

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;

如果您对输出格式没有任何特定要求,最简单的方法是使用Data::Dumper:

use strict;
use Data::Dumper;

open OUTFILE, "> output.txt" or die $1;
print OUTFILE Dumper \%folder_structure;
close OUTFILE;
Edit:根据注释,
Dumper
被传递到散列的引用,而不是散列本身

Data::Dumper模块有一些用于控制输出的设置,您可以在其上阅读。

该模块自v5.8版以来就包含在Perl core发行版中,也可以从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};

必须将hashref作为参数提供给转储程序
Dumper\%folder\u structure
如果使用哈希引用,Data::Dumper的输出肯定会更容易理解。但是我认为你说你“必须”使用一个是太夸张了。@davorg:你是对的,我应该说:
你应该给…
。英语不是我的母语。