【发布时间】:2019-01-26 03:31:23
【问题描述】:
我需要验证文件是否存在,但文件名发生了变化。由于附加时间(hh-mm-ss),至少文件名的最后一部分确实如此。
所以基本上,无论 hh-mm-ss 是什么,我都需要查看文件 yyyy-MM-dd-hh-mm-ss 是否存在。
我正在尝试进行通配符搜索,但找不到该文件。
比如我想检查文件/home/httpd/doc/$user/$year/2018-08-20-*是否存在。
文件名变量是否可以使用*?或者其他更好的方法?
我正在尝试检查文件是否存在,但使用通配符。这是我的代码:
opendir(DIR, "/home/httpd/doc/$user/2018") || die "Unable to open log/location";
while(<>){
if($_ =~ /\/2018-08-20-\d+-\d+-\d+/) {
print "file exists\n";
}
}
【问题讨论】:
-
您尝试的
while (<>)有点特别:<>从启动时提交给程序的文件中读取行。因此,如果您说script.pl file1 file2,那么while (<>)程序中的script.pl将从file1和file2依次读取行。不是你想要的。 (一旦你opendir然后你就可以按照暴民的回答显示。) -
(更准确地说,
<>打开名称在@ARGV中的文件并读取它们) -
嗨@georgetovrea 我相信你已经问过这个问题了,我想它已经回答了stackoverflow.com/questions/51832909/…
标签: perl file-exists