有没有办法将数组哈希打印到一个文件中,其中哈希的键是标题,而数组的值是标签(或其他任何)分隔的列?
我的最后一次尝试是这样的:
foreach my $key(sort keys %outHash){
my $temp1 = join ("\n",@{$outHash{$key}});
my $temp2 = $key."\n".$temp1;
print OUTPUT "$temp2\t";
print OUTPUT "\n";
}
这产生了可怕的输出。 任何帮助将不胜感激 ! 谢谢。
答案 0 :(得分:1)
你可以试试这个:
use feature qw(say);
use strict;
use warnings;
my %out_hash = (
a => [1,2,3],
b => [3,4,5],
);
my @keys = sort keys %out_hash;
say join "\t", @keys;
my $N = 3;
for my $i (0 .. ($N-1)) {
my @row;
for my $key (@keys) {
push @row, $out_hash{$key}->[$i];
}
say join "\t", @row;
}
<强>输出强>:
a b
1 3
2 4
3 5
答案 1 :(得分:1)
如果我理解正确 - 你有一个数组哈希,你想要在列中打印。
要做到这一点:
#!/usr/bin/env perl
use strict;
use warnings;
my %test = (
a => [ 1, 2, 3 ],
b => [ 4, 5, 6, 7 ],
);
my @header = sort keys %test;
print join (",", @header), "\n";
while ( map {@$_} values %test ) {
my @row;
push( @row, shift @{ $test{$_} } // '' ) for @header;
print join (",", @row ), "\n";
}
但是,您可能最好使用不同的数据结构,这样可以使您的数据按行进行组织,并使用散列切片逐行迭代。