perl用动态日期打开csv文件吗?

时间:2014-03-16 16:39:51

标签: perl

如何打开包含每天更改日期的CSV文件,其中日期格式为{1}}年,yyyy表示日期,dd表示3个月。

就我而言

mmm

3 个答案:

答案 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非常完整,甚至包含有关三个字母缩写的内容。

对文件名的字符串文字进行一些评论:

  • 即使在Windows上,您也可以使用单个正斜杠
  • 您不必使用反斜杠
  • 来逃避点
  • 如果"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