![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| rcdimon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Я хочу огромную программу раскидать по отдельным файлам. Хочу в разные файлы впихнуть сходные по функциям подпрограммы. Но почему то не все работает.
Вот это код основной программы
А это код того файла, который подсоединяется в главном
Так вот ничего не работает. А если я соединяю просто в один файл, то все ОК. ПОчему? Помогите, пожалуйста! |
||||
|
|||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
В конец каждого подгружаемого файла добавь единицу и удали первую строку, она не нужна:
Удачи. Это сообщение отредактировал(а) korob2001 - 25.6.2005, 22:07 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| TwiSteR |
|
|||
![]() Кибер красавчег ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 15.6.2005 Где: World->Russia Репутация: нет Всего: 2 |
korob2001
Че-то у меня тоже не получается, даже 1 (конец) указываю, не работает --------------------
|
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Вот эти два файла сохрани в один тот же каталог:
файл first.pl
файл second.pl
Запусти файл first.pl в результате, на выходе увидишь число которое указано в переменной $num в квадрате. Удачи. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon лучше всего использовать не require, а use, т.е. используй модульное программирование. Так будет работать на много быстрее и это правильный подход к программированию.
Создавай модули и у тя проблем не будет. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Вот пример:
Модуль Tools.pm
Основной скрипт index.cgi
Только index.cgi и Tools.pm должны лежать в одной директории. Вот и все! ЗЫ раньше я тоже все делал через require, но это не практично, ресурсоемко и получается, что ты просто вставляешь в скрипт кусок подключаемого файла. И я перешел на модули. Скорость реально увеличилась и стал заметен стиль программирования. Понятное дело, я не желею. Это сообщение отредактировал(а) sharq - 26.6.2005, 13:35 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А я давно перешёл на классы. Правда require и use не одно и тоже. Если у тебя етсть большой файл, кторый разбит на много подпрограмм, которые выполняются в зависимости от действий пользователя. Допустим в одной из всех подпрограмм, тебе нужно подгрузить другой файл, то гораздо лучше использовать require, так как use не спрячешь от компилятора, даже если он будет внутри подпрограммы, т.е. модуль будет загружен даже если эта подпрограмма и не запускалась.
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
korob2001
Вопрос: зачем писать большие-большие скрипты, в которых легко запутаться и трудно отладить? Поэтому и пишут модули, в которых есть ряд функций, выполняющие опред. действия, их легко отладить и модифицировать, и несколько скриптов, которые используют те или иные модули. Хотя каждый делает так, как ему удобно. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
А как использовать use то?
|
|||
|
||||
| korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Вот так, это одно и тоже:
Лично мне гораздо проще и, главное, быстрее отладить один большой скрипт, чем много маленьких. А если уж разбивать на модули, то здесь я предпочитаю ООП. Хотя не могу с тобой не согласиться, каждый в праве писать так, как ему удобно.
Сначала пишешь модуль или класс, сохраняешь его в файл с рассширением .pm, имя должно соответствовать имени пакета. Затем кидаешь его в библиотечный каталог, если удоступа к такому каталогу у тебя нет, значит создаёшь отдельный каталог, и в каждом скрипте, который будет использовать твой модуль или класс, прописываешь такую строку:
Ну вот собственно и всё. Хотя если пишешь модуль не забудь об экспорте, если класс, не забудь о конструкторе. Если хочешь пример, то вот здесь можешь почитать о том, как создаются классы: http://forum.vingrad.ru/index.php?showtopic=43392 а здесь увидеть, как примерно пишется модуль: http://forum.vingrad.ru/index.php?showtopic=55677 Если возникнут конкретные вопросы, пиши. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
| sharq |
|
||||||||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
korob2001
Да, согласен, есть ряд задач, когдалучше использовать объекты, но не всегда.
Это, конечно, хорошо, но крайне неудобно при переносе скрипта, каждый раз менять... imho, лучше модули хранить в той же директории, что и скрипт, подключающий их или, на крайняк, импортировать модуль в вызвавший пакет. Например, есть основной скрипт проекта index.cgi и директория MyModule, в которой находятся несколько модулей, которые используются в скрипте, например - MySub.pm. MySub.pm
Тогда index.cgi подключает такие модули как обычные модули:
Давно нашет такое решение на http://dklab.ru. Впредь им пользуюсь.
это не обязательно... -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||||||||
|
|||||||||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Но желательно. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |