Perl:使用通配符检查文件是否存在

Blu*_*man 1 perl

我正在尝试使用 -e 来检查文件是否存在,$name 是用户指定的任何输入,"_file_"是固定的,而 * 可能是任何可能的。目前它无法检测到该文件。

if (-e $name."_file_*.txt)
{
   do something;
}
Run Code Online (Sandbox Code Playgroud)

Ja͢*_*͢ck 6

为什么不用glob()来呢?

if (my @files = glob("\Q$name\E_file_*.txt")) {
  # do something
}
Run Code Online (Sandbox Code Playgroud)

  • 考虑到我回答过的 Perl 问题的数量,并不是真的:) `"\Q...\E"` 是 `quotemeta("...")` 的缩写,它用斜杠转义非单词字符 (插值后)。因此,如果 `$name` 是 `foo bar`,这将导致 `glob("foo\\ bar_file_*.txt")` 而不是不正确的 `glob("foo bar_file_*.txt")` (2认同)