|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Wagner 2:5020/400 28 Nov 2002 01:02:17 To : lozenkov@sartfoms.ru Subject : Re: Использование функции из модуля -------------------------------------------------------------------------------- lozenkov@sartfoms.ru <lozenkov%sartfoms.ru@f16.n5053.z2.fidonet.org> wrote: lsr> Сорри за ламерский вопрос, но я в с perl только начинаю. lsr> Хочу создать модуль и использовать из него функцию. lsr> Создал модуль и записал его в /usr/lib/perl5/site_perl/5.6.1/Any/. lsr> Типа вот он (сами функции не приведены): lsr> package Mine; lsr> require Exporter; lsr> @ISA = qw(Exporter); lsr> @EXPORT = qw(commify, krjaka2koi); lsr> sub commify { lsr> } lsr> sub krjaka2koi { lsr> } lsr> Далее создаю файл, использующий этот модуль lsr> use Any::Mine; lsr> $str = '=?koi8-r?Q?=D0=D2=C9=D7=C5=D4?='; lsr> $newstr = Mine::krjaka2koi($str); lsr> print "$newstr\n"; lsr> Если функцию вызывать Mine::krjaka2koi($str), то все ОК. lsr> Hо если только по имени функции krjaka2koi($str), то perl говорит: lsr> Undefined subroutine &main::krjaka2koi called at ... lsr> Что я не так делаю? У тебя имя модуля в package и use не совпадает. Ты импортируешь модуль Any::Mine, при этом подгружается файл Any/Mine.pm, содержащий какие-то package, вообще говоря - более одного. И все, что экспортируется из package Any::Mine (в данном случае ничего) тащится в текущий namespace. А вот функции, экспортируемые из Mine -не тащатся - его ведь ты не use, и даже не import. А вообще тот модуль который тебе на самом деле нужен, называется MIME::Words. lsr> Заранее спасибо -- Где запрещено смеяться, там обычно и плакать нельзя. --- С.Е. Лец --- ifmail v.2.15dev5 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/151786b5d62ab.html, оценка из 5, голосов 10
|