Shmuel wrote:far.RecursiveSearch НЕ обходит директорию рекурсивно, если только специально не постараться (включить бит FRS_RECUR в параметре Flags).
Да, действительно, если не указывать флаги при вызове, то всё в порядке, дальше первого уровня не идет. Не понимаю, как я мог такое пропустить...
John Doe wrote:Ещё LuaFAR предоставляет функцию win.SearchPath (основанную на SearchPathW)
Я ее находил в luafar_manual.chm, но там совершенно неочевидно, как это можно использовать для получения списка всех поддиректорий (можно ли вообще?). Чтение соответствующей страницы MSDN понимания не прибавило (для проверки существования заранее известного файла она подходит, или например для поиска dll где-то в путях), да и отсутствие примеров использования удручает.
John Doe wrote:Достаточно выполнить команду "dir" (io.popen) и обработать её вывод.
Про этот трюк я тоже был в курсе, его довольно часто рекомендуют и на StackOverflow, и на форумах, посвященных Lua, но тут я разделяю точку зрения DrKnS - всё это хорошо смотрится только в шелл-скриптах, при наличии возможности использовать родные системные вызовы, обернутые в функции используемого языка - грех не воспользоваться.
sToLp wrote:А чем не подходит плагин Environment Manager, который "позволяет настроить г р у п п ы настроек переменной среды, и с лёгкостью их включать/выключать"? И он есть и для x86, и для x64.
Пытался и его поиспользовать вначале, только не понял - он умеет ли изменять PATH так, чтобы там в любой момент времени был только один путь к Перлу? То есть из менюшки выбираем "Perl 5.6.1" - в путях появляется C:\Perl\5.6.1\bin, а потом если выбираем "Perl 1.2.3" - предыдущий исчезает, чтобы никак не мешаться, и на его месте появляется C:\Perl\1.2.3\bin ?
Мой способ хорош еще и тем, что при появлении в C:\interpreter новых версий в самом макросе ничего не надо допиливать - все подхватится автоматом.
Ну и еще пара indirect bonus'ов - я, так сказать, впервые обагрил свои руки первой кровью написательства макросов на Lua для Фара, плюс если мне вдруг приспичит какая нетривиальщина (работа с сокетами например) - множество уже изобретенных Lua-велосипедов к моим услугам, надо только будет скомпилять их