file :: globstar不适用于某些模式



我正在尝试使用文件:: globstar模块递归搜索文件。https://metacpan.org/pod/file:: globstar#examples。

但是,当路径包含 ._时,文档中给出的某些模式对我不起作用。

例如,当我进行以下任一项操作时,搜索是空的:

use File::Globstar qw(globstar);
my $path = 'D:/a.a/b/c/**/*.js';
my @results = globstar $path;

use File::Globstar qw(globstar);
my $path = 'D:/a_a/b/c/**/*.js';
my @results = globstar $path;

但是,当我避免使用 **时,这些起作用。

my @results = globstar 'D:/a.a/b/c/e/*.js' 

我做错了什么?

这似乎是file :: globstar中的错误。

[修复在0.6 中]

>md f_oo & md f_oobar & copy nul f_oobara.js >nul
>perl -MFile::Globstar=globstar -e"CORE::say for globstar 'f_oo/**/*.js'"
>md f.oo & md f.oobar & copy nul f.oobara.js >nul
>perl -MFile::Globstar=globstar -e"CORE::say for globstar 'f.oo/**/*.js'"
>md foo & md foobar & copy nul foobara.js >nul
>perl -MFile::Globstar=globstar -e"CORE::say for globstar 'foo/**/*.js'"
foo/bar/a.js

错误不是特定于Windows的错误。

$ md -p f_oo/bar; touch f_oo/bar/a.js
$ perl -MFile::Globstar=globstar -e'CORE::say for globstar "f_oo/**/*.js"'
$ md -p f.oo/bar; touch f.oo/bar/a.js
$ perl -MFile::Globstar=globstar -e'CORE::say for globstar "f.oo/**/*.js"'
$ md -p foo/bar; touch foo/bar/a.js
$ perl -MFile::Globstar=globstar -e'CORE::say for globstar "foo/**/*.js"'
foo/bar/a.js

试图逃脱有问题的角色在两个系统上都毫无结果。

您应该与维护者联系。


您可能可以使用file :: find :: Rule而不是file :: globstar。

>md f_o.o & md f_o.obar & copy nul f_o.obara.js >nul
>perl -MFile::Find::Rule -e"CORE::say for File::Find::Rule->name('*.js')->in('f_o.o')"
f_o.o/bar/a.js

相关内容

  • 没有找到相关文章

最新更新