Ну, между теми также я думаю, что C#/XNA является явным победителем на основе поддержки библиотеки и действительно зрелости, данной опыт Microsoft в DirectX. Однако я не вижу, что C#/XNA заменяет C++ в качестве лингва франка серьезного 3D игрового программирования (т.е. большими зданиями разработки) в течение очень долгого времени, если когда-либо.
Если вы не хотите переписывать / исправлять скрипт, я предлагаю вызвать скрипт через exec ()
или одну из его разновидностей. Хотя это не очень элегантно, но это определенно решит вашу проблему.
Если вы хотите принудительно перезагрузить модуль, удалите его запись из % INC
, а затем перезагрузите ее.
Например:
sub reload_module {
delete $INC{'Your/Silly/Module.pm'};
require Your::Silly::Module;
Your::Silly::Module->import;
}
Обратите внимание, что если этот модуль полагается на глобальные переменные в других устанавливаемых модулях, возможно, потребуется их перезагрузка. Нет простого способа узнать это, не заглянув в код.
Другая возможность (просто подумайте вслух) может быть связана с локальным каталогом? Они бегут с одного места. Впрочем, с первого раза, наверное, не сработает.
Другой вариант - использовать system ('doprocessing.pl');
. Лениво, мы делаем это с помощью нескольких скриптов для принудительной повторной инициализации ряда классов / переменных и т. Д. И для принудительного вращения файлов журнала должным образом.
edit: Я только что перечитал ваш вопрос, и он будет похоже, что вы не называете это так.
Выгрузка модуля - более сложная задача, чем простое удаление записи% INC модуля. Взгляните на Class :: Unload из CPAN.
Вы уверены, что вам нужно перезагрузить модуль? Используя do
, вы каждый раз читаете исходный код и выполняете его. Что произойдет, если вы измените его на require
, который будет читать и оценивать источник только один раз?
Привет, я использую сценарий Perl, написанный другим человеком, который больше не работает в компании. Я попытался включить предупреждение, и оно выдало тысячи строк предупреждений ...!
Вот и ваша проблема. Сценарий был написан некорректно и должен быть переписан.
Задайте себе вопрос: если при включении строгой проверки у него есть тысячи предупреждений, как вы можете быть уверены, что он работает правильно? Как вы можете быть уверены, что он не сбивает файлы, не уничтожает наборы данных и не портит вашу файловую систему? Скорее всего, он делает все это, намеренно или случайно.
Я бы не стал доверять запуску скрипта с ошибками, написанного кем-то, кто больше не работает в компании. Я бы переписал его и был уверен, что он делает то, что мне нужно.