2015-01-27 2 views
0

Perl начинающий здесь. Я создал хэш-хех, где «конечное» значение представляет собой массив строк. Это выглядит следующим образом:Как печатать хэш хэшей с векторными значениями в файл с разделителями табуляции с разделителями?

my %sampleHash =() 

$sampleHash{$sample1} = { 
    R1Tests => \@sample1Results_1, 
    R2Tests => \@sample1Results_2, 
    }; 

$sampleHash{$sample2} = { 
    R1Tests => \@sample2Results_1, 
    R2Tests => \@sample2Results_2, 
    }; 

$sampleHash{$sample3} = { 
    R1Tests => \@sample3Results_1, 
    R2Tests => \@sample3Results_2, 
    }; 

Я хочу напечатать весь хэш в табуляцией файл, который выглядит следующим образом:

sample1 @sample1Results_1[0] @sample1Results_1[1] .... @sample1Results_2[0] @sample1Results_2[1] ... 
sample2 @sample2Results_1[0] @sample2Results_1[1] .... @sample2Results_2[0] @sample2Results_2[1] ... 
sample3 @sample3Results_1[0] @sample3Results_1[1] .... @sample3Results_2[0] @sample3Results_2[1] ... 

Что такое эффективный способ сделать это? Я знаю, что это связано с циклом while или foreach, но я не знаю, как сделать его распечаткой в ​​файл, сделать его столбцом мудрым и распечатать оба суб-хэша в одной строке.

ответ

3

Я предполагаю, что эти массивы в вашем хеше действительно массивы ссылки, а точки с запятой действительно запятые?

Это очень просто. Есть несколько способов сделать это, но я бы использовал each для итерации по образцам и join для сборки содержимого.

Как это (непроверенной, поскольку у меня есть только планшет в руки, пока я путешествую)

while (my ($sample, $results) = each %sampleHash) { 
    print join("\t", 
      $sample, 
      @{ $results->{R1Tests} }, 
      @{ $results->{R2Tests} } 
    ), "\n"; 
} 
+0

Еще одна вещь, чтобы предположить: $ sampleHash {$ sample1} и т.д., на самом деле $ sampleHash { 'sample1'} и т. д. – nlu

+0

Спасибо, @Borodin! И спасибо за головы с полуколонами и ссылками. Отредактировано, чтобы показать правильный синтаксис. – gaelgarcia

+0

При объявлении/создании хэшей правильные фигурные скобки или вместо них должны быть скобки? – gaelgarcia

Смежные вопросы