Как я реализую ленивый модуль, загружающийся в Perl?

Реализация исправления орфографических ошибок для поисковых систем эффективным способом не тривиальна (Вы не можете только вычислить edit/levenshtein расстояние до каждого возможного слова). Решение на основе индексов k-грамма описано в Введение в Информационный поиск (полный текст, доступный онлайн).

8
задан brian d foy 12 November 2009 в 04:02
поделиться

1 ответ

Загрузить модуль, когда вы хотите

Если вам нужно загрузить весь модуль во время выполнения, вы используете require . Но для импорта вам потребуется дополнительный код. Вот пример:

## this function is almost the same 
## as "use My::Module qw( :something  )"
sub load_big_module_at_runtime {
    ## load module in runtime
    require My::Module;
    ## do import explicty if you need it
    My::Module->import( ':something' );
}

Загрузить модуль при использовании его функций

Вы также можете использовать autouse для загрузки модуля, только когда его функция используется. Например:

## will load module when you call O_EXCL()
use autouse Fcntl => qw( O_EXCL() );

Загружать только функции, когда они используются

Существует также модуль SelfLoader , который позволяет загружать отдельные функции только тогда, когда они вам нужны. Взгляните на модуль AutoLoader , который делает почти то же самое.

Я также рекомендую прочитать соответствующие рецепты из Perl Cookbook .

20
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: