|
|
|
[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, 15:42 |
|
||
|
[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, 17:10 |
|
||
|
[PERL] Добраться до кода скрипта из модуля
|
|||
|---|---|---|---|
|
#18+
Alibek B., Потому что вы их так вызываете. Вы 2 раза new делаете. Это в вашем коде есть. Вот тут: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2012, 20:42 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38060222&tid=1464373]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 448ms |

| 0 / 0 |
