Perl脚本如何自动读取/tmp目录下每日生成的带日期CSV输入文件
实现方案
你可以通过文件匹配+时间排序的方式自动获取目标文件,无需硬编码文件名,以下是两种常用场景的实现:
方案1:自动读取/tmp目录下最新生成的sessions_record文件(绝大多数场景适用)
直接替换你脚本中硬编码$inputfile的那一行即可:
# 匹配/tmp目录下所有符合命名规则的csv文件 my @csv_files = glob "/tmp/sessions_record_*.csv"; # 无匹配文件时直接抛出明确错误,避免后续逻辑报错 die "未在/tmp目录下找到符合规则的sessions_record文件" unless @csv_files; # 按文件修改时间倒序排序,取最新的第一个文件作为输入 my $inputfile = (sort { (stat($b))[9] <=> (stat($a))[9] } @csv_files)[0];
方案2:自动读取当天生成的sessions_record文件
如果你的需求是固定读取当日生成的文件,可以增加日期过滤规则:
# 生成和文件名格式一致的当日日期字符串 my $today = strftime "%Y-%m-%d", localtime; # 匹配当天生成的所有符合规则的文件 my @csv_files = glob "/tmp/sessions_record_${today}_*.csv"; die "未在/tmp目录下找到当日生成的sessions_record文件" unless @csv_files; # 当日存在多个文件时取最新的 my $inputfile = (sort { (stat($b))[9] <=> (stat($a))[9] } @csv_files)[0];
以上两种方案都不需要修改你原有脚本的其他业务逻辑,依赖的函数都是Perl内置或你已经引入的模块提供的,无需额外安装依赖。
内容的提问来源于stack exchange,提问作者Ayad
相关产品推荐
相关产品推荐

