perl变量在一个字符串里面的后面滴答

时间:2017-07-30 15:26:04

标签: string perl variables

我的文件名格式为electric_inventory_WE_20170730_195758.dat。每天都会创建一个类似的文件。创建的时间可能会有所不同我需要使用今天的日期捕获文件名,不用担心时间和结束时使用.dat扩展名。

我为今天的日期创建了一个变量。我需要在后面的tick内部的字符串中使用这个变量。像这样:

my $today = `date "+%Y%m%d"`;

my $filename = `ls electric_inventory_WE_$today*.dat`;

我无法找到一种方法让这个变量在后面的滴答声内的字符串内工作。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

这正是你在反引号中使用变量的方法。

我不确定实际问题是什么(" 我找不到让它工作的方法"不是一个有用的问题描述),但是这是我的猜测:

`date ...`返回一个带有尾随换行符"\n"的字符串,因此您实际运行的命令最终会:

ls electric_inventory_WE_20170330
*.dat

一种可能的解决方案是避免使用shell(以及datels等外部命令):

use POSIX qw(strftime);

my $today = strftime "%Y%m%d", localtime;
my @candidates = glob "electric_inventory_WE_$today*.dat";
if (@candidates != 1) {
    ...   # handle error: either 0 or more than 1 files were found
}
my $filename = shift @candidates;

答案 1 :(得分:-1)

感谢所有提供此信息的人,我为交叉帖子道歉。感谢您的帖子,我能够使用以下内容来实现这一目标:

my $ filename =“electric_inventory_WE_”。 $今天。 “* .DAT”;