Hash of Hash of values正确地打印到csv但是数组值的散列哈希正在弄乱我的csv文件。请在下面找到我的代码无效。
< use strict;
use warnings;
use Data::Dumper;
my %student_hash;
my $student_report = "StudentReport.csv";
%student_hash = (
'RollNummber1' => {
'studentname' => 'Boris',
'address' => ['Vietnam',
'local'
],
'DOB' => '5june2000'
},
'RollNummber2' => {
'studentname' => 'John',
'address' => [
'4th/floor',
'Culverdown/Street',
'WestHam',
'UK.',
],
'DOB' => '2feb2000'
},
'RollNummber3' => {
'studentname' => 'Karen',
'DOB' => '5march2000'
}
);
print "StudentHash:".Dumper(\%student_hash);
open(my $fh, '>', $student_report) or die("Couldn't open ile");
print $fh "DOB \t,ADDRESS \t,NAME \t\n";
foreach my $key(keys %student_hash){
foreach my $secondkeys (keys %{$student_hash{$key}}){
if($secondkeys =~ /DOB || studentname/) {
print $fh "$student_hash{$key}{$secondkeys} \t,"; }
if($secondkeys =~ /address/) {
print $fh Dumper $student_hash{$key}{$secondkeys} };
}
print $fh "\n";
}
close($fh);>
如果我注释掉打印数组部分,那么代码工作正常。有人请建议如何在一个单元格或多个单元格中将数组元素打印到csv中。谢谢
答案 0 :(得分:1)
使用Text::CSV
- 如果您有要打印的数组引用,则可以使用return View(model)
。 (它为你处理报价)。
或者您可以使用print
设置列排序,并column_names
按顺序输出哈希值。
看起来你并不担心print_hr
,所以你可以欺骗并做:
RollNumber
迭代。我不清楚你要对foreach my $student ( values %student_hash ) {
}
做些什么。但是一个简单的address
可能就是那里的伎俩。 (取决于所需的输出,在换行或空格上)。
join