我使用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上搜索了这个,但找不到有用的信息。
会发生什么以及如何正确执行此操作? 任何帮助都会很好。非常感谢。
答案 0 :(得分:5)
glob
operator的工作方式与命令行处理器类似。如果您撰写<rawdata/*Epley maneuver*.csv>
,则会查找与rawdata/*Epley
或maneuver*.csv
匹配的文件
你必须将你的glob表达式放在双引号中:
my @files = <"rawdata/*$term*.csv">