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
相关产品推荐
相关产品推荐

