Прежде чем читать в новом файле, прочитайте в целевом CSV-файле (если он не пустой). Создайте хэш хэшей. Ключом для первого хэша HashA будут значения field1. Значением такого ключа, как value1, будет хэш-код HashB. HashB будет иметь ключи, которые являются значениями field2, которые соответствуют value1. Значение ключа в HashB будет просто «1». (Неважно, что это.)
Теперь, когда вы хотите экспортировать второй файл, вы просто добавляете новые ключи в HashB для каждого ключа для HashA.
Вот ваш пример.
Сначала вы делаете первый файл, чтобы получить
значение1 -> {значение2 -> 1}
значение3 -> {значение4 -> 1}
значение5 -> {значение6 -> 1}
Теперь, когда вы читаете второй файл со строкой field1 = value1, field2 = value8, вы просто добавляете ключ в HashB для value1
значение1 -> {значение2 -> 1, значение8 -> 1}
значение3 -> {значение4 -> 1}
значение5 -> {значение6 -> 1}
Теперь, когда вы перебираете HashA, вы печатаете ключи в column1 (для field1) и печатаете каждый ключ из HashB.
#!/usr/bin/perl
%hashA = ();
$hashA{"value1"}{"value2"} = 1;
$hashA{"value3"}{"value4"} = 1;
$hashA{"value5"}{"value6"} = 1;
foreach $value1 ( sort keys %hashA ) {
foreach $value2 ( sort keys %{ $hashA{$value1} } ) {
print "$value1, $value2\n";
}
}
$hashA{"value1"}{"value8"} = 1;
print "\n\n";
foreach $value1 ( sort keys %hashA ) {
foreach $value2 ( sort keys %{ $hashA{$value1} } ) {
print "$value1, $value2\n";
}
}