Слияние внутренних хэшей в Perl - PullRequest
0 голосов
/ 29 октября 2010

У меня есть 3-х мерный хэш и 2-х мерный хеш, и я хочу объединить 2-х мерный хеш с одним из внутренних хешей 3-х мерного хеша, что-то вроде этого, что похоже на то, что я делаю, чтобы объединить паруиз 2d хешей:

my %3dhash;
my %2dhash;
my $key = "some string";
%3dhash{$key} = ($3dhash{$key}, %2dhash);

Но когда я попробовал, это не сработало.Что мне делать?

1 Ответ

2 голосов
/ 29 октября 2010

Попробуйте следующее:

my %hash3d;
my %hash2d;
....
my $key = "some string";
$hash3d{$key} = { %{ $hash3d{$key} }, %hash2d };

Переменные в Perl не могут начинаться с цифры, поэтому я переименовал переменные.%{ ... } вокруг существующего хеша расширяет его как список.Этот список выравнивается со списком от %hash2d.{ ... } вокруг этого списка - это анонимный хеш-ссылочный конструктор, который создает новую хеш-ссылку, которая затем сохраняется в $hash3d{$key}

...