You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl处理txt文件时如何从文件名中提取8位日期存储为变量

完全可以直接提取,你的文件名格式规整,用正则匹配或二次分割都能快速拿到8位日期:

方法1:正则匹配(推荐,代码更简洁)

直接匹配下划线后紧跟的8位连续数字即可,修改后代码如下:

my $dir = "t-files/";
chdir($dir);
foreach my $files (glob('*.txt')) {
  my ($sname) = split(/_/, $files);
  # 捕获下划线后的8位数字,即YYYYMMDD格式日期
  my ($sdate) = $files =~ /_(\d{8})/;
  print "\nSwitch Name: $sname - Date: $sdate";
}

你给出的示例文件名测试后,输出的sdate分别为20140911、20141027,完全符合需求。如果存在不符合命名规则的文件,可以加next unless $sdate;过滤无效项。

方法2:二次分割

如果不想用正则,也可以对split后的第二部分再按横杠分割提取:

my $dir = "t-files/";
chdir($dir);
foreach my $files (glob('*.txt')) {
  my ($sname, $date_part) = split(/_/, $files);
  my ($sdate) = split(/-/, $date_part);
  print "\nSwitch Name: $sname - Date: $sdate";
}

内容的提问来源于stack exchange,提问作者seltika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:54:04