Как добавить данные из файла 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> );

Подробности смотрите в open, chomp и read line.

Другие вопросы по тегам