![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Уважаемые, подскажите пожалуйста, как программу разбить на
несколько подпрограмм. Чтобы к примеру все функции по чтению файла были в одном файле, по редактированию в другом и т.д. Хочу функции вынести из "главного" файла. Как я понимаю, в главной программе должно быть что-то вроде use MYFUNC; В теле программы сам фызов функции. К примеру, myfunc_read(); А в подпрограмме должно быть уже тело самой функции. myfunc_read() { print "Ok!"; } Добавлено @ 18:30 Если можно пример. ;-) |
|||
|
||||
| shootnix |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 3.9.2005 Где: Казахстан Репутация: 2 Всего: 2 |
Создаёшь пакадж такого вида:
Теперь в главной программе подключаешь пакадж так:
|
||||
|
|||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Выдает ошибку Undefined subroutine &main::hello called at \home\mb.ru\cgi-bin\m.pl line 9.
|
|||
|
||||
| shootnix |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 3.9.2005 Где: Казахстан Репутация: 2 Всего: 2 |
ага, бывает
Можно ещё сделать модуль (это порой бывает удобнее). Для этого имя пакаджа должно совпадать с именем файла и иметь расширение .pm
В массив @EXPORT вносятся те функции, которые должны быть доступны в основной программе по умолчанию при загрузки модуля. После этого модуль используется таким образом:
т.е. имя пакета указывать не нужно, но ничего страшнго не будет, если напишешь так:
Это сообщение отредактировал(а) shootnix - 29.5.2006, 21:12 |
||||||||
|
|||||||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
shootnix, с внесенным изменением hello::hello('alex'); заработал первый вариант.
На второй вариант ругается.
Как я понимаю, не установлен данный модуль. Exporter.pm входит в стандартный пакет или его нужно скачивать отдельно? Чувствую, что должен входить в стандартный набор. Почему так же ругается на use strict;. Интерпретатор был скачен с ActiveState. Т.е. пакадж и модуль это разное? Я изначально хотел модуль. Так как не знал, что существую некие "пакаджы". В книге по Perl это написано или только в интернете об этом можно узанать? Просто у меня на руках книга: "Освой самостоятельно Perl за 24 часа". Второй вариант нравится больше. А то писать/копировать название пакета утомительно и лениво. Зачем проделывать лишнюю работу... P.S. Не сразу заметил ответа, так как не был подписан на тему. Благодарю за быстрый и полный ответ! |
|||
|
||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
shootnix, спасибо, все работает так как надо!
+ |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |