Как добавить данные из файла CSV в массив в Perl?
Я искал и искал в Интернете, но ничего, что я делаю, похоже, не работает. Я знаю, что это глупо простой вопрос, но я действительно застрял...
У меня был каталог файлов, и я сохранил имена каталогов в файл 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 ответ
Не использовать ls
в программе Perl. Вместо этого вы можете использовать glob:
my @files = glob "$path/*";
Если вам нужно работать с путями и именами файлов, отметьте Path:: Tiny.
Чтобы прочитать строки с путями в массив, просто используйте
open my $fh, '<', $filename or die $!;
chomp( my @paths = <$fh> );