Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Без каких файлов не зупустить пёрл?
Форумы портала PHP.SU » » Вопросы по Perl/Python/.NET » Без каких файлов не зупустить пёрл?

Страниц (1): [1]
 

1. Быколай - 07 Мая, 2010 - 13:39:26 - перейти к сообщению
Добрый день!
Возникла задача оставить от перла только-то что нужно скрипту - сам интерпретатор и вызываемые пакеты, посмотрел в /lib/, /site/lib/ и ужаснулся, >50 Мб для скрипта в 50 строк.
Есть ли какой-то программный способ прочитать список файлов которые интерпретатор дёргает всегда и без спроса, "жизненно-необходимых"?
А то удалять методом тыка не красиво как-то. Растерялся
2. JustUserR - 07 Мая, 2010 - 15:39:28 - перейти к сообщению
Быколай пишет:
Добрый день!
Возникла задача оставить от перла только-то что нужно скрипту - сам интерпретатор и вызываемые пакеты, посмотрел в /lib/, /site/lib/ и ужаснулся, >50 Мб для скрипта в 50 строк.
Есть ли какой-то программный способ прочитать список файлов которые интерпретатор дёргает всегда и без спроса, "жизненно-необходимых"?
А то удалять методом тыка не красиво как-то
На самом деле для запуска Perl под windows нужен только сам интерпретатор и набор dll-файлов к нему вроде perl58.dll - а без всего остального Perl вполне запуститься
Дело в том что все средства ввода/вывода встроены в ядро Perl и не требуют никаких модулей и пакетов - а следовательная простая Perl-программа также может работать без каких-либо внешних пакетов Причем на самом деле программа может быть и не очень простая - ведь в ядро включены и регулярные выражений и функции обработки структур данных и много другое
То есть вы можете оставитель только perl.exe и perl58.dll и интерпретатор будет работать - но вы должны быть готовы к тому что если вы решите вручную добавить какой-то модуль - то он наверняка ссылается на какой-то из других модулей и вы получите ошибку Также следует помнить что прагмы языка Perl это также модули
Также если вам нужен специальный компакнтный интерпретатор Perl то можете воспользоваться MiniPerl-дистрибутивом
3. Быколай - 07 Мая, 2010 - 16:04:18 - перейти к сообщению
Спасибо за обстоятельный и развёрнутый ответ!
JustUserR пишет:
На самом деле для запуска Perl под windows нужен только сам интерпретатор и набор dll-файлов к нему вроде perl58.dll

Действительно так и есть!
Похоже единственный способ узнать все подключения - ковырять каждый пакет. А есть в perl способ подавления ошибок, чтобы компиляция не прерывалась на первом отсутствующем модуле? Можно конечно придумать утилиту которая бы рекурсивно просматривала все включаемые пакеты и прагмы на предмет дальнейших включений, но... надо подумать, а может что-то подобное на CPAN есть?
Попробую добавлять пакеты по мере написания программы, отслеживая ошибки...
4. JustUserR - 09 Мая, 2010 - 15:46:31 - перейти к сообщению
Быколай пишет:
Спасибо за обстоятельный и развёрнутый ответ!
Действительно так и есть!
Пожалуйста! Помимо прочего если вам нужен компактный Perl-скрипт без внешних зависимостей то можете скомпилировать его в исполняемый файл например с помощью Perl2exe - в таком случае для запуска внешние библиотеки не понядобятся и их наличие нужно будет только при компиляции
Быколай пишет:
А есть в perl способ подавления ошибок, чтобы компиляция не прерывалась на первом отсутствующем модуле?
Блок eval {} с фигурными скобками (Обратите внимание что код внутри него без кавычек) подавляет абсолютно любые ошибки кроме конечно синтаксических То есть с помощью данного блока можно продолжить исполнение Perl-скрипта даже при отсутствующем модуле - но скорее всего он не будет работать поскольку библиотеки увидятся отсутствие зависимостей и просто откажутся от инициализации - ошибка будет сохранена в переменной $@
Можете также использовать блок AUTOLOAD для предпроверки наличия модулей - и выполнения каких-то операций при их отсутсвии

 

Powered by ExBB FM 1.0 RC1