Perl:为文件夹内的csv文件选择Filepath

时间:2018-11-24 18:37:23

标签: perl csv filepath

我有一个Perl脚本,可以对选定的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 :(得分:1)

根据toolic的建议和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!;