如何打开包含每天更改日期的CSV文件,其中日期格式为{1}}年,yyyy
表示日期,dd
表示3个月。
就我而言
mmm
答案 0 :(得分:1)
目前还不清楚你要求的是什么,而且你没有在你的模式中提到%d
和%h
。
如果您想打开最新的CSV文件,则需要对路径进行嵌套搜索,找到最新的日期和时间。
这可能有所帮助。此代码生成将为当前日期和时间创建的文件的路径。它使用Time::Piece
模块,它是核心Perl的一部分,不需要安装。默认情况下,它会重载localtime
运算符,以便在标量上下文中返回Time::Piece
对象。这样就可以直接应用模块的实用方法。
use strict;
use warnings;
use Time::Piece;
my $failures_file = localtime->strftime('C:\DBR_%Y\%b\Failures_input%d%b.csv');
my $invoices_file = localtime->strftime('C:\%Y\%b\invoices%d%b.csv');
print $failures_file, "\n";
print $invoices_file, "\n";
<强>输出强>
C:\DBR_2014\Mar\Failures_input17Mar.csv
C:\2014\Mar\invoices17Mar.csv
但是我认为您更希望最新文件的名称具有该表单的路径,这有点复杂(以及可怕的系统设计)。请验证您的要求,我们将能够为您提供进一步的帮助。
答案 1 :(得分:0)
我想写一个关于localtime
Perl函数的答案,但its documentation非常完整,甚至包含有关三个字母缩写的内容。
对文件名的字符串文字进行一些评论:
"DBR_$yyyy"
是变量,您可以将变量“插入”字符串:$yyyy
。答案 2 :(得分:0)
我是SzG的一般建议。
以下显示如何使用两个核心模块将日期格式添加到文件名中。
使用Time::Piece(自5.8版以来在Perl核心中):
use Time::Piece;
use strict;
use warnings;
my $infile = localtime->strftime('C:\DBR_%Y\%b\Failures_input%d.csv');
如果您正在使用古老的盒子,请使用POSIX和strftime。要查找可用的说明符,只需google strftime:
use POSIX qw(strftime);
use strict;
use warnings;
my $infile = strftime 'C:\DBR_%Y\%b\Failures_input%d.csv', localtime;
输出:
C:\DBR_2014\Mar\Failures_input16.csv