在csv文件中特定标题下保存哈希
我有一个散列格式为在csv文件中特定标题下保存哈希,csv,perl,hash,Csv,Perl,Hash,我有一个散列格式为 $VAR1 = { 'ALPA' => 51, 'BETA' => 39 }; 我想以csv格式保存哈希,标题为alpha和beta,格式为 ALPA BETA 51 39 请指导我,因为我是perl新手。如果您想以csv格式输出,我将使用 my $VAR1 = { 'ALPA' => 51, 'BETA' => 39 }; my @k = (); # remember all the keys my @v = (); #
$VAR1 = {
'ALPA' => 51,
'BETA' => 39
};
我想以csv格式保存哈希,标题为alpha和beta,格式为
ALPA BETA
51 39
请指导我,因为我是perl新手。如果您想以csv格式输出,我将使用
my $VAR1 = {
'ALPA' => 51,
'BETA' => 39
};
my @k = (); # remember all the keys
my @v = (); # remember all the values in corresponding order
foreach my $k (keys(%{$VAR1})) {
push(@k, $k);
push(@v, $VAR1->{$k});
}
print(join(",", @k) . "\n"); # concat with comma in between
print(join(",", @v) . "\n");
在我的电脑上,这个结果
BETA,ALPA
39,51
如果希望输出是以制表符分隔的值,可以将in join函数替换为\t
然而,据我所知,在散列变量声明中,您永远不能保留键值对的顺序。如果您愿意,您需要另一个数组,以正确的顺序存储所有键。CSV代表“逗号分隔值”,在您的输出中没有逗号 请检查以下样本代码是否符合您的要求
use strict;
use warnings;
use feature 'say';
my %hash = (
'ALPA' => 51,
'BETA' => 39
);
say join(',',keys %hash);
say join(',',values %hash);
输出
ALPA,BETA
51,39
使用以后,请在您的问题中显示您尝试过的代码。这与现在的情况无关,因为你已经得到了一些答案无法使用字符串$VAR1={'alpha=>51,…作为散列引用,而严格引用正在使用中}我在这里遇到了错误。您可以发布整个程序,还是测试我的程序?我正在使用ur程序运行我将输出保存在一个散列中,当我使用打印函数print Dumper\%sGrpHash时,该散列将显示输出;生成输出,如$VAR1={'ALPA'=>51,'BETA'=>39};错误消息应指出发生此错误的行。您能粘贴由``引用的原始错误消息吗。