Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在csv文件中特定标题下保存哈希_Csv_Perl_Hash - Fatal编程技术网

在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};错误消息应指出发生此错误的行。您能粘贴由``引用的原始错误消息吗。