Perl 通过正则表达式获取文件

标签 perl file

在系统的特定文件夹中有一个文件。 我知道它的名字是一个数字,我在一个变量中有这个数字。

我不知道这个文件有什么扩展名。

我如何获取这个文件?

最佳答案

(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 确实是一个数字,它就应该是安全的。

您还可以使用 opendirgrep 的组合来代替 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/

相关文章:

php - Laravel 5 文件夹结构中的文件保存位置?

ios - 在没有 iTunes 的情况下将音乐和有声读物的文件夹复制到 iPhone(并且不必先标记我的所有媒体)

Perl:确定函数的定义位置

perl - 如何使用 Perl 获取目录中仅包含普通文件的列表?

java - 从当前包中获取文件

java - 如何在 Java 中正确实现 FileChooser

c - 如何使用 fscanf 将字符串放入数组?

perl - 从 perl 程序导入单个子程序

perl - Selenium /网络驱动程序 : use existing Firefox profile?

perl - Perl 的 GetOpt::Long 接受开关缩写是错误吗?