|
Perl: конструктор и деструктор без инстанса
|
|||
---|---|---|---|
#18+
Подскажите, можно ли сделать такое? У меня есть модуль, который используется для хранения промежуточных данных между запусками скрипта. Структура модуля примерно такая: Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
А использую модуль, соответственно, примерно так: Код: php 1. 2. 3. 4. 5. 6. 7.
А хотел бы использовать так: Код: php 1. 2. 3. 4. 5. 6.
Но в этом случае я не знаю, как определить события, когда родительский скрипт запустился и завершил работу. И если вызов конструктора я еще могу эмулировать (просто вызвать метод new в теле модуля), то как вызвать деструктор я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 09:39 |
|
Perl: конструктор и деструктор без инстанса
|
|||
---|---|---|---|
#18+
Мне на ум приходила пара способов, но добиться результата не получилось. 1. Можно поставить обработчик на %SIG и перехватывать завершение скрипта. В принципе это работает, но такой способ мне не нравится и я подозреваю, что тут могут быть сложности, если я перехватываю уже перехваченный сигнал. 2. Можно использовать BEGIN и END. Но хотя это и работает на первый взгляд, я не могу понять логику работы Perl. Добавляю в модуль такой код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9.
А в скрипте пишу так: Код: php 1. 2. 3. 4. 5.
И получаю такой вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 09:50 |
|
Perl: конструктор и деструктор без инстанса
|
|||
---|---|---|---|
#18+
Подумал было, что это оптимизация компилятора, и сделал так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но результат получился еще более непонятным: Код: plaintext 1. 2. 3. 4. 5.
Не подскажите, как правильно это использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 09:55 |
|
Perl: конструктор и деструктор без инстанса
|
|||
---|---|---|---|
#18+
https://perldoc.perl.org/perlmod.html#BEGIN,-UNITCHECK,-CHECK,-INIT-and-END Не сказать, что все логично, но по крайней мере что-то стало ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 12:10 |
|
|
start [/forum/moderation_log.php?user_name=Eraser_stp]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 836ms |
total: | 1017ms |
0 / 0 |