<SomeStuff>
等同于glob "SomeStuff"
(除了<>
用于从文件句柄读取的所有歧义之外——请参阅perldoc perlop
并查找I/O Operators
那里)。因此,您的示例不等效。你应该使用
my @files = glob "\"rawdata/*_${term}_*.csv\""; #(2)
反而。
但是,至于为什么图案中的空间会有所不同:perldoc -f glob
讲述故事。正常glob
(因此<>
通过 实现glob
)将空格视为模式分隔符。该文档还提到File::Glob
了它的功能bsd_glob
,它不将空格视为模式分隔符。因此考虑改用这个:
use File::Glob ':glob';
my $term1 = "some stuff";
my @files1 = glob "dir/${term1}*";
my $term2 = "more";
my @files2 = glob "dir/${term2}*";
print join(' :: ', sort @files1), "\n", join(' :: ', sort @files2), "\n";
我刚刚创建的一些文件的可能输出:
[0 mosu@tionne ~/tmp] ~/test/test1.pl
dir/some stuff is betther than other stuff.doc :: dir/some stuffy teachers.txt
dir/more beer.txt :: dir/more_is_less.csv