|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Sergey Skvortsov 2:5020/400 06 Sep 2005 14:14:29 To : Slawa Olhovchenkov Subject : Re: perl модули -------------------------------------------------------------------------------- Slawa Olhovchenkov wrote: > > >> А можно кратенько для тех кто в танке и все пропустил? > >> А то я сейчас man perlmod читаю и основная суть от меня что-то > >> ускользает. > > А по внутренностям того, что внутри модуля -- разница есть? > > SS> "require My::Module" - это как "require /path/to/My/Module.pm", но > SS> загружается лишь единожды. > > Что значит "единожды"? Если ты дважды в коде вызовешь "require My::Module", то реально он загрузится лишь в первый раз. При повторном вызове, если такой модуль уже был загружен, ничего не произойдет. Это как #include <my/module.h>: #ifndef _MY_MODULE_ #define _MY_MODULE_ ...code #endif > SS> "use My::Module (@args)" - это лишь "require My::Module; > SS> My::Module->import(@args)". > > SS> в целом "require" используется ну очень редко. > > редко? почему? потому что есть "use" и packages лучше скриптов. > SS> use My::Module; > SS> use My::Module::Admin; > SS> use My::Module::User; > > Вот от такого списка хочется избавится. Хочется просто понакидать в каталог > нужный набор модулей, а тут автомагическим циклом его активировать. В целом > понято -- в центральном скрипте readdir с require "$file", в модуле что-то > типа BEGIN { $main::common_hash{'ident_module'} = \&sub_module; }; Тогда возвращаясь к истокам - это идеологически неправильно. Если очень хочется - лучше использовать lazy evaluation: (my $action) = ($query->path_info =~ /^(\w+)/; my $class = 'My::Module::'.$action; # try load specific handler eval "use $class;"; unless($@) { $class->process(); }else { # fallback } -- Sergey Skvortsov mailto: skv@protey.ru --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577d06357eb.html, оценка из 5, голосов 10
|