File :: Globstar не работает для некоторых шаблонов - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь использовать модуль File :: 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' 

AmЯ что-то не так делаю?

1 Ответ

2 голосов
/ 08 мая 2019

Похоже, это ошибка в File :: Globstar.

[ Исправлено в 0.6 ]

>md f_oo & md f_oo\bar & copy nul f_oo\bar\a.js >nul

>perl -MFile::Globstar=globstar -e"CORE::say for globstar 'f_oo/**/*.js'"

>md f.oo & md f.oo\bar & copy nul f.oo\bar\a.js >nul

>perl -MFile::Globstar=globstar -e"CORE::say for globstar 'f.oo/**/*.js'"

>md foo & md foo\bar & copy nul foo\bar\a.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.o\bar & copy nul f_o.o\bar\a.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...