在系统的特定文件夹中有一个文件。 我知道它的名字是一个数字,我在一个变量中有这个数字。
我不知道这个文件有什么扩展名。
我如何获取这个文件?
最佳答案
(my $filename) = glob "$specific_folder_in_the_system/$that_number.*";
编辑: 正如 Ikegami 在下面指出的那样,这对目录的特定路径名很敏感。如果该目录名称包含空格或其他特殊字符,它将失败。您可以通过将字符串的非通配符部分包裹在嵌入式引号中来缓解这种情况:
(my $filename) = glob "'$specific_folder_in_the_system/$that_number.'*";
但是对于例如 $specific_folder_in_the_system = "/Users/O'Neal, Patrick";
,这仍然会失败。
如果你不介意改变你当前的工作目录,你可以先chdir($specific_folder_in_the_system) or die
然后使用glob("$that_number.*")
,只要 $that_number
确实是一个数字,它就应该是安全的。
您还可以使用 opendir
和 grep
的组合来代替 glob
:
opendir(my $dir, $specific_folder_in_the_system) or die;
(my $filename) = grep /^$that_number\./ readdir $dir;
关于Perl 通过正则表达式获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312041/