如何将CSV文件中的数据添加到Perl中的数组?

时间:2016-12-12 08:51:44

标签: arrays perl csv file-writing

我已经在线搜索和搜索,但我所做的一切似乎都没有用。我知道这是一个非常简单的问题,但我真的卡住了......

我有一个文件目录,并将目录名保存到CSV文件中。它只是由一列数据组成,例如:

100
101
102
103...

我使用以下代码创建文件(以防万一相关):

open (my $fileh, '>', '/Users/Shared/serials.csv') or die "Could not open file!";
print $fileh `ls -1 $path`;
close $fileh;
print "Saved Serials!";

现在我想要的是将文件中的数据读入一个数组,然后循环遍历每个值以完成一项任务。我无法弄清楚如何做到这一点......

目前我在代码中手动输入数字到数组中,如:

@ser_list = (100,101,102,103,...);

如上所述,我想要使用ls命令行查询自动编写文件名(数字),然后从那里将它们读回脚本。 如果有一种方法可以做到这一点,而不必制作一个很好的单独的值文件。

在这个例子中,数组被称为@ser_list,从那里我正在从数组中读取下一个$ ser_num并在循环中使用它。

foreach $ser_num (@ser_list) {....}

提前感谢大家的帮助和耐心!

1 个答案:

答案 0 :(得分:6)

不要在Perl程序中使用ls。您可以改为使用glob

my @files = glob "$path/*";

如果您需要使用路径和文件名,请检查Path::Tiny

要读取包含数组路径的行,只需使用

open my $fh, '<', $filename or die $!;
chomp( my @paths = <$fh> );

有关详细信息,请参阅openchompreadline