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

时间:2012-07-03 13:31:23

标签: perl file

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

我不知道的是这个文件的扩展名。

如何收集此文件?

2 个答案:

答案 0 :(得分:3)

(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;

答案 1 :(得分:2)

my ( $file ) = glob "$num.*" ;