Сброс хэша массивов в файл - PullRequest
0 голосов
/ 11 мая 2011

Как записать в файл хэш массивов?

Каждый хэш-ключ - это имя папки, а массив - все файлы, перечисленные в папке.

Вот над чем я работаю,

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 ]

7 голосов
/ 11 мая 2011

Если у вас нет особых требований к формату вывода, самый простой способ - использовать 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 .

1 голос
/ 11 мая 2011

Модуль Storable.pm , включенный в базовый дистрибутив Perl начиная с версии 5.8, а также доступный в 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};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...