我已经在线搜索和搜索,但我所做的一切似乎都没有用。我知道这是一个非常简单的问题,但我真的卡住了......
我有一个文件目录,并将目录名保存到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) {....}
提前感谢大家的帮助和耐心!
答案 0 :(得分:6)
不要在Perl程序中使用ls
。您可以改为使用glob:
my @files = glob "$path/*";
如果您需要使用路径和文件名,请检查Path::Tiny。
要读取包含数组路径的行,只需使用
open my $fh, '<', $filename or die $!;
chomp( my @paths = <$fh> );