首页 文章

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

提问于
浏览
3

我使用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”的文件夹中 .

当我将它用于不包含空格的术语时,例如“头晕”,它运作良好 . 但是,当该术语包含空格时,它就会停止工作 . 我在Google上搜索了这个,但找不到有用的信息 .

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

1 回答

  • 5

    glob operator的工作方式与命令行处理器类似 . 如果您编写 <rawdata/*Epley maneuver*.csv> ,它将查找与 rawdata/*Epleymaneuver*.csv 匹配的文件

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

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

相关问题