Perl 日期时间生成?

Yal*_*man 2 perl datetime

我有一个 perl 脚本,它获取系统日期并将该日期写入文件名。

系统日期分配给 TRH1 变量,然后将其设置为文件名。

$TRH1 =`date + %Y%m%d%H%M`;
print "TRH1 => $TRH1\n";
open(TPFILE, ">./log/errTS_TPList_$TRH1.csv"); 
Run Code Online (Sandbox Code Playgroud)

但是,TRH1 似乎具有正确的值,但文件名有一个问号,这是我不想要的。

TRH1 => 202103031940
errTS_TPList_202103031940?.csv
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何摆脱这个“?” ?

Dav*_*oss 5

正如您已经看到的那样,这是因为从 的输出date末尾有一个换行符,您需要使用chomp().

但是,实际上没有必要使用外部程序来获取日期和时间。现代版本的 Perl 带有Time::Piece,这使得它变得微不足道:

use Time::Piece;

# Perl style generally reserves uppercase variable names
# for constants
my $trh1 = localtime->strftime("%Y%m%d%H%M");
Run Code Online (Sandbox Code Playgroud)

使用旧版本的 Perl,您可以strftime()POSIX使用:

use POSIX 'strftime';

my $trh1 = strftime("%Y%m%d%H%M", localtime);
Run Code Online (Sandbox Code Playgroud)