perl - 关于 Perl 文件名通配符的问题

标签 perl filenames wildcard

我正在使用 perl 处理一些文本文件。我想使用 perl 文件名通配符来查找文件夹中所有有用的文件并一一寻址,但我的文件名中有空格。然后我发现文件名通配符无法正确处理这些文件名。这是我的代码:

my $term = "Epley maneuver";
my @files = <rawdata/*$term*.csv>;
my $infiles;
foreach $infilename (@files) {
    if($infilename =~ m/(\d+)_.*\.csv/)
    {
        $infiles{$infilename} = $1;
        print $1."\n";
    }
}

文件名如下:

34_Epley maneuver_2012_4_6.csv
33_Epley maneuver_2012_1_3.csv
32_Epley maneuver_2011_10_12.csv
...

它们位于名为“rawdata”的文件夹中。

当我将它用于不包含空格的术语(如“dizzy”)时,效果很好。但是,当该术语包含空格时,它就会停止工作。我在 Google 上搜索了这个,但找不到有用的信息。

会发生什么,我该如何正确地做到这一点? 任何帮助都会很好。非常感谢。

最佳答案

glob operator像命令行处理器一样工作。如果你写 <rawdata/*Epley maneuver*.csv>它将查找与 rawdata/*Epley 匹配的文件或 maneuver*.csv

您必须将 glob 表达式放在双引号中:

my @files = <"rawdata/*$term*.csv">

关于perl - 关于 Perl 文件名通配符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907943/

相关文章:

perl - 在 Perl 中循环字符

Bash:对于文件名做

macos - 在 OS X 上使用父文件夹名称重命名一堆文件

c - Linux 上 C 中带有通配符条目的文件名

Makefiles : using `wildcard` vs. `find` 用于指定源文件

xml - 使用 XML::Parser 解析大型 XML 文件时如何查看进度?

perl - 如何为 Perl 的 XML::LibXSLT 安装 libXSLT?

linux - 如何将用户名附加到文件名中

Java 泛型 - 多次使用相同的通配符

ruby - 是否存在与 Perl 或 Ruby 中的触发器运算符等效的函数式编程概念?