Size: a a a

2020 November 23

SZ

Sergey Zhmylove in Modern::Perl
Есть ещё вариант: сделай autoload который ищет функцию в main::
источник

SZ

Sergey Zhmylove in Modern::Perl
Если я верно тебя понял
источник

AK

Andrey Konovalov in Modern::Perl
Вообще тут даже шире может быть вопрос... На самом деле реально иногда хочется слегка замусорить CORE... Ну т.е. тот же json на это просто напрашивается, как и масса других кодеров/декодеров.
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
Вообще тут даже шире может быть вопрос... На самом деле реально иногда хочется слегка замусорить CORE... Ну т.е. тот же json на это просто напрашивается, как и масса других кодеров/декодеров.
Ты не сможешь
источник

AK

Andrey Konovalov in Modern::Perl
Т.е. вариантов обеспечить доступность функции отовсюду не  существует?
источник

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot *CORE::foo=sub{print-123}; CORE::foo();
источник

P

PerlBanjoBot in Modern::Perl
Sergey Zhmylove
@PerlBanjoBot *CORE::foo=sub{print-123}; CORE::foo();
CORE::foo is not a keyword at script.pl line 9.
https://PerlBanjo.com/078d0c3297
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
Т.е. вариантов обеспечить доступность функции отовсюду не  существует?
Почему?
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
Т.е. вариантов обеспечить доступность функции отовсюду не  существует?
Я ещё раз говорю: раз плагины у тебя семантически должны быть в том же неймспейсе, то внутри каждого сделай package main;
источник

SZ

Sergey Zhmylove in Modern::Perl
Ты обрисовал задачу так, что хочешь куски приложения загружать по условию. Но тебе не нужно чтобы это были отдельные модули
источник

SZ

Sergey Zhmylove in Modern::Perl
Ну так и сделай их кусками одного приложения -- main
источник

AK

Andrey Konovalov in Modern::Perl
Sergey Zhmylove
Я ещё раз говорю: раз плагины у тебя семантически должны быть в том же неймспейсе, то внутри каждого сделай package main;
туплю... Сам-то плагин будет всё же в своём пакете, это же класс с методом register
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
туплю... Сам-то плагин будет всё же в своём пакете, это же класс с методом register
Что?
источник

AK

Andrey Konovalov in Modern::Perl
Ну я к тому, что плагин - это, например
package App::Plugins::PluginName;
sub register {
  [ '/foo/bar' =>
     sub { how_to_handle_this_route }
  ]
}
источник

AK

Andrey Konovalov in Modern::Perl
В main делается add_route соответственно. Ну, это один из миллиона случаев, просто у меня сейчас конкретно он
источник

AK

Andrey Konovalov in Modern::Perl
Часто плагины нужны не для того даже, чтобы реально что-то удобно было писать, а чтобы банально разнести код по файлам, дабы не иметь дело с простынёй в 10000 строк . Это уже потом возникают мысли "о, как круто, мне теперь не нужно лезть прямо в код приложения, чтобы добавить функционал".
источник

AK

Andrey Konovalov in Modern::Perl
Ну и вот в коде плагина хочется по сути просто обогащённый тем приложением, которое его подключает, набор функций. Потому что в любом приложении есть какие-то типичные для его контекста вещи. В Mojo-приложениях это вынесено в Mojo::Base, например
источник

AK

Andrey Konovalov in Modern::Perl
Но кажется несправедливым немного то, что тот же use Mojo::Base есть в каждом втором .pm'е Mojolicious-приклада. Как-то это криво немного и странно
источник

AT

Artem Tepponen in Modern::Perl
То есть ты хочешь, чтобы в package Plugin; было ещё и всё, что есть в package main? Ну такое
источник

W

Warstone in Modern::Perl
Andrey Konovalov
Хмм... use base наверное и для таких случаев годен... Впрочем, это всё равно явное упоминание в плагине имени пакета-родителя
Для тебя придумали mro 'c3' и пуш-в-ису
источник