Не удалось найти File :: Find Raku в Windows 7

У меня есть очень простая программа, которая перечисляет все .txt файлы в заданном каталоге. Эта программа отлично работает на моем Mac с версией Rakudo Star 2019.03.1

use File::Find;

my $folder="../Documents";

.say for find dir => $folder, name => /'.txt' $/;

Когда я попытался запустить ту же программу в Windows 7 с Raku 2020.12.1, она выдала следующее:

$ raku html-adder.rk

===SORRY!=== Error while compiling C:\Users\lars\raku/html-adder.rk

Could not find File::Find in:
    inst#C:\Users\lars\.raku
    inst#C:\Programs\rakudo-moar-2021.02.1\share\perl6\site
    inst#C:\Programs\rakudo-moar-2021.02.1\share\perl6\vendor
    inst#C:\Programs\rakudo-moar-2021.02.1\share\perl6\core
    ap#
    nqp#
    perl5#
at C:\Users\lars\raku/html-adder.rk:12

Я обновил Raku до версии Raku 2021.02.1, и снова та же ошибка. Я установил его, разархивировав rakudo-moar-2021.02.1-01-win-x86_64-msvc.zip, т.е. без использования установщика. Что касается Raku на Mac, я не помню, как устанавливал модуль File::Find, и не знаю, как вывести список установленных модулей, т.е. я не проверял, был ли File::Find установлен на Mac или Windows 7.

Как заставить эту программу работать на Windows 7?


person Lars Malmsteen    schedule 14.03.2021    source источник
comment
Возможно, ваш сценарий содержит адрес каталога с косой чертой, характерный для Mac? Тот, который не читается должным образом в Windows? Эта строка выглядит необычно: C:\Users\lars\raku/html-adder.rk.   -  person jubilatious1    schedule 15.03.2021
comment
@ jubilatious1 нет, на самом деле речь не идет об использовании прямой или обратной косой черты. Эта строка в любом случае была выведена компилятором, поэтому она обязательно будет правильной. В наши дни компилятор нередко имеет строки, содержащие как прямую, так и обратную косую черту.   -  person Lars Malmsteen    schedule 16.03.2021


Ответы (1)


File::Find не встроен в Raku и не распространяется с Rakudo Star; насколько мне известно, этого никогда не было.

Это модуль экосистемы, который вы можете установить с помощью Zef (используйте команду zef install File::Find).

Это также очень короткая библиотека. Если вы хотите исправить свой скрипт без добавления зависимости, вы можете проверить исходный код для File :: Find; он достаточно короткий, чтобы вы могли легко реализовать ту же функцию самостоятельно.

person codesections    schedule 14.03.2021
comment
Это сработало, если использовать параметр --force-test. Теперь сложнее, как это работало на Mac. Я просмотрел ~/.bash_history, и среди 16 000 записей или около того не было строки, содержащей zef install File::Find Как головоломка :) - person Lars Malmsteen; 14.03.2021
comment
@LarsMalmsteen, возможно, zef установился при установке какого-то другого модуля. Он автоматически установит для вас зависимости. - person user0721090601; 14.03.2021
comment
@LarsMalmsteen Может быть, установленный вами пакет Mac устанавливает File::Find, а стандартный пакет Windows - нет. Что указано в zef list --installed списке? Щелкните ссылку на онлайн-оценщик, который предопределяет, какие пакеты будут установлены. Я получаю ===> Found via /opt/rakudo-pkg/share/perl6/core ===> Found via /opt/rakudo-pkg/share/perl6/site (CORE:ver<6.d>:auth<perl> zef:ver<0.9.4>:auth<github:ugexe>:api<0> File::Find:ver<0.1.1> File::Which:ver<1.0.1> LibraryMake:ver<1.0.0>:auth<github:retupmoca> Linenoise:ver<0.1.1>:auth<Rob Hoelz> Shell::Command). - person raiph; 14.03.2021
comment
Продолжая точку зрения @ user0721090601, похоже, что File::Find - это 8-я по частоте прямая зависимость ( и 24-й по частоте переходный). Поэтому установка его в качестве зависимости для чего-то еще кажется довольно хорошей ставкой. - person codesections; 14.03.2021
comment
@raiph zef list --installed дает около 30 строк с именами модулей, среди которых, конечно же, указан File::Find. Установлено только 3 модуля с использованием zef, и это Color, perl6-color и Terminal-ANSIcolor, потому что только эти 3 можно найти в .bash_history Кстати, есть еще одна проблема: File::Find неправильно печатает имена файлов, не содержащие символы ASCII. Если я не могу это исправить, мне, возможно, придется опубликовать новый вопрос об этом. - person Lars Malmsteen; 15.03.2021
comment
@LarsMalmsteen Кстати, есть еще одна проблема. Из-за специфики Windows Q Как обрабатывать специальные символы ... К счастью, Microsoft теперь решает программы, и поэтому мы сможем найти способ обойти ваши проблемы с Unicode в Windows, если вы проявите терпение. В частности, если вы используете старую версию Windows, пожалуйста, ожидайте, что сначала она не будет работать с современным программным обеспечением, поддерживающим Unicode, если вам не повезет. Мы по-прежнему поможем, если сможем, но это, вероятно, потребует от вас терпения по отношению к нам, Microsoft и Rakudo и наоборот. - person raiph; 16.03.2021