Построить строку из 2 хешей

У меня есть 2 хеша, как показано ниже

hash1:
 key      value
 part0     company0
 part1     company1
 part2     company2

hash2:
 key      value
 part0     2B
 part1     4B
 part2     6B

Я хотел бы создать строку, используя 2 хеша, например: "part0 company0 2B, part1 company1 4B, part2 company2 6B" (без кавычек)

Как мне этого добиться?

2 ответа

Решение

Итак, если вы уверены, что оба хеша имеют одинаковые ключи, вы можете сделать что-то вроде этого:

foreach my $key (sort keys %hash1) {
     print "$key $hash1{$key} $hash2{$key}\n";
}

Если они могут иметь разные ключи, вам нужно найти способ получить объединение списка или пересечение, для которого, вероятно, есть функция в List::Compare.

my $answer = "";
my $pad = "";
foreach my $key (sort keys %hash1)
{
    $answer .= "$pad$key $hash1{$key} $hash2{$key}\n";
    $pad = ", ";
}
print "$answer\n";

Это предполагает, что hash2 содержит одну простую запись для каждого ключа, найденного в hash1 (может содержать дополнительные записи, но не может содержать меньше записей).

Другие вопросы по тегам