我的文件名格式为electric_inventory_WE_20170730_195758.dat。每天都会创建一个类似的文件。创建的时间可能会有所不同我需要使用今天的日期捕获文件名,不用担心时间和结束时使用.dat扩展名。
我为今天的日期创建了一个变量。我需要在后面的tick内部的字符串中使用这个变量。像这样:
my $today = `date "+%Y%m%d"`;
my $filename = `ls electric_inventory_WE_$today*.dat`;
我无法找到一种方法让这个变量在后面的滴答声内的字符串内工作。任何帮助将不胜感激。
答案 0 :(得分:3)
这正是你在反引号中使用变量的方法。
我不确定实际问题是什么(" 我找不到让它工作的方法"不是一个有用的问题描述),但是这是我的猜测:
`date ...`
返回一个带有尾随换行符"\n"
的字符串,因此您实际运行的命令最终会:
ls electric_inventory_WE_20170330
*.dat
一种可能的解决方案是避免使用shell(以及date
和ls
等外部命令):
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”;