
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.11.2012, 15:42
|
|||
|---|---|---|---|
[PERL] Добраться до кода скрипта из модуля |
|||
|
#18+
Есть довольно большой модуль (pm-файл), обслуживающий типовые скрипты (pl-файлы). Есть некоторая специфика использования: модуль выгружает часть своего кода во внешний временный pl-файл, копирует этот файл на удаленный хост, запускает его по SSH и результат выполнения обрабатывает. Чтобы не запутаться в описании, применяю следующую терминологию: модуль — pm-файл, который содержим общие методы и используется внешними скриптами скрипт — pl-файл, выполняющий определенные процедуры, который использует модуль агент — pl-файл, сформированный из модуля и повторяющий часть его функциональности для выполненя на удаленной машине Хочется добиться следующего: 1. Сейчас временный файл (назовем его агентом) формируется из секции DATA модуля. При этом в файле есть несколько процедур, повторяющих процедуры модуля; скажем есть процедура модуля _query и процедура агента query, код которых совершенно одинаков. Если я обновляю код процедуры в модуле, то нужно также обновить код агента в секции DATA. Сложностей в этом нет, но этот шаг кажется мне избыточным. Можно ли из модуля получить содержимое кода модуля? Я читал про B::Deparse, но не совсем понял, как его применить. Когда подобный механизм использовался в отдельном скрипте, то я просто открывал файл $0 и извлекал из него нужные процедуры. Однако в модуле $0 указывает не на файл модуля, а на файл вызывающего модуль скрипта. 2. В скрипте также есть секция DATA, в которой храняться некоторые исходные данные для работы скрипта (в основном там храняться SQL-запросы). Можно ли из модуля добраться до содержимого скрипта, в частности секции DATA? Сейчас скрипты сами передают в модуль это содержимое, но хотелось бы эту часть одинакового кода перенести из скрипта в модуль. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2012, 17:10
|
|||
|---|---|---|---|
[PERL] Добраться до кода скрипта из модуля |
|||
|
#18+
И еще третий вопрос. Почему может два раза вызываться конструктор? Код скрипта такой: Код: php 1. 2. 3. 4. 5. Код модуля такой: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. new (и _init) почему-то вызываются два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2012, 20:42
|
|||
|---|---|---|---|
[PERL] Добраться до кода скрипта из модуля |
|||
|
#18+
Alibek B., Потому что вы их так вызываете. Вы 2 раза new делаете. Это в вашем коде есть. Вот тут: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&mobile=1&tid=1464373]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 450ms |

| 0 / 0 |
