Perl: выберите Filepath для CSV-файла в папке - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть Perl Script, который выполняет некоторые операции с данными с выбранным CSV-файлом.Раньше я переименовывал CSV-файл, чтобы он соответствовал файлу, указанному в моем скрипте.

Теперь я хочу изменить его так, чтобы был выбран единственный файл в папке, но файл csv не всегда назывался одинаково.В папке будет только один файл.

В настоящее время я использую этот метод;

my $filepath_in = 'C:\delete_csv_files\files_new\input.csv';
my $filepath_out = 'C:\delete_csv_files\files_processed\output.csv';

open my $in,  '<:encoding(utf8)', $filepath_in or die;
open my $out, '>:encoding(utf8)', $filepath_out or die;

Я также хочу, чтобы файл сохранил свое первоначальное имя после обработки.

Может кто-нибудь дать мне указатели?

1 Ответ

0 голосов
/ 25 ноября 2018

Как предлагает инструмент и прокомментировал ikegami, вы можете использовать glob.

my ($filepath_in) = glob 'C:\delete_csv_files\files_new\*';

Затем вы можете использовать регулярное выражение для генерации имени выходного файла, например:

(my $filepath_out = $filepath_in) =~  s!\\files_new\\!\\files_processed\\!;

Это даст вам файл с тем же именем в каталоге files_processed.

Если вы хотите принудительно установить имя файла вывода на output.csv, как в вашем фрагменте кода, тогда используйтеэто регулярное выражение вместо:

(my $filepath_out = $filepath_in) =~  s!\\files_new\\.*$!\\files_processed\\output.csv!;
...