以CSV格式写入数组值

时间:2013-08-05 12:35:10

标签: arrays perl csv file-handling

我有一个元素数组,我需要使用Perl文件处理存储在不同的单元格中。

foreach(@type)
{
print FH qq|"@type","@date","@loc","@title"\n|;
}

我使用上面的代码,但它只存储数组中的最后一个元素。

提前致谢。

2 个答案:

答案 0 :(得分:6)

如果您使用foreach (@type),特殊变量$_会一个接一个地分配@type的值。在您的代码中,您没有使用变量$_。相反,您输出@type,即您正在迭代的数组。您可能想要遍历索引,例如

for (0 .. $#type) {
    print FH qq("$type[$_]","$date[$_]","$loc[$_]","$title[$_]"\n);
}

或者,使用命名循环变量:

for my $index (0 .. $#type) {
    print FH qq("$type[$index]","$date[$index]","$loc[$index]","$title[$index]"\n);
}

请注意,如果您的列可能包含换行符或双引号,那么使用Text::CSV会更好。

答案 1 :(得分:2)

如果您正在尝试编写CSV文件,最好使用CPAN中的特定模块来帮助您。例如,Text::CSV。在CSV格式的自定义实现中,您可能会忘记许多小细节。