Построить строку из 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
(может содержать дополнительные записи, но не может содержать меньше записей).