你好我正在通过PERL从XMLRPC API检索数据,并最终得到一个HASH(实际上我相信这里的正确术语应该是数组中的数组),我部分想将其转换为CSV文件。如何将多维HASH转换为PERL中的CSV文件?
如这里的基本概述是我在做什么:
my $server = XMLRPC::Lite
->proxy('https://myhost/api');
my $session = $server->login(foo)
->result;
my @tempArr = $server->call(foobar)->result;
事后:
print @tempArr;
结果:
HASH(0x23c0330)
如果我倾倒通过数据计算散列内容:: Dumper:
print Dumper(\@tempArr);
然后我收到阵列的结构如下:
$VAR1 = [
{
'table' => [
[
'abc',
'def',
'ghi',
'jkl'
],
[
'abc',
'def',
'fed',
'cba'
],
],
'columns' => [
'field1',
'field2',
'field3',
'field4',
]
}
];
现在我想从“表”的所有项目写入一个CSV文件格式化。所以基本上在这种情况下:
abc,def,ghi,jkl
abc,def,fed,cba
我用文字:: CSV :: Slurp的玩弄了一会儿,但并没有真正理解如何处理它的阵列阵列内:
my $csv = Text::CSV::Slurp->create(input => \@tempArr);
my $file = "/path/output.csv";
open(FH, ">$file") || die "Couldn't open $file $!";
print FH $csv;
close FH;
我只是想出了以下内容的csv文件:
columns,table
ARRAY(0x23c01b0),ARRAY(0x25a944c)
对如何处理这个问题的任何建议,将不胜感激。目前我已经决定回顾一下PERL中的数组和哈希,因为我似乎对这个问题缺乏很多基本的理解。
'print $ tempArr;'nothing nothing用@ tempArr做的事情。你确定你发布了正确的代码吗? – cjm
Woopsy,这是我的代码片断中的一个错字。谢谢你指出。我现在纠正了它! – user3248687