Size: a a a

2021 July 28

SZ

Sergey Zhmylove in Modern::Perl
А без динамического объявления это всё бессмысленно, потому что можно кейворды использовать
источник

GK

Grigoriy Koudrenko in Modern::Perl
Есть вот такая штука https://metacpan.org/pod/Sub::Name я ее как раз использовал для динамической генерации классов основываясь на шаблоне и чтобы при этом работал mro
источник

GK

Grigoriy Koudrenko in Modern::Perl
Но у меня все было в секции BEGIN и насчет рантайма не знаю насколько будет работать
источник

SZ

Sergey Zhmylove in Modern::Perl
Не будет, как и прагма subs
источник

GK

Grigoriy Koudrenko in Modern::Perl
Да subs то понятно, она просто делает *{"${callpack}::$sym"} = \&{"${callpack}::$sym"}; а та штука на уровне XS трогает typeglob
источник

SZ

Sergey Zhmylove in Modern::Perl
Да ну, одна фигня, шо так, шо эдак
источник

SZ

Sergey Zhmylove in Modern::Perl
The name is only used for informative routines (caller, Carp, etc). You won't be able to actually invoke the sub by the given name. To allow that, you need to do glob-assignment yourself.
источник

SZ

Sergey Zhmylove in Modern::Perl
Что-то не похоже
источник

GK

Grigoriy Koudrenko in Modern::Perl
Это было лет 5 назад, всех деталей не помню уже,  но завелось с mro  только так *{$name} = subname $name => $sub;
источник

GK

Grigoriy Koudrenko in Modern::Perl
Чтобы next::method работал корректно
источник

GK

Grigoriy Koudrenko in Modern::Perl
А ну да этот способ у них прям в доке описан https://perldoc.perl.org/mro#next::method
источник
2021 July 29

VG

Vadim Goncharov in Modern::Perl
это не то совсем, в соседнем чате есть любитель писать на перле КАК на JS
источник

a

allter in Modern::Perl
constant.pm медленный только в сравнении с "ручным" созданием констант. use constant - это синтаксический сахар над "ручным" интерфейсом. Поэтому если у вас не специфические требования (типа CGI на mips роутере), то смело пользуйтесь use constant...
источник

GK

Grigoriy Koudrenko in Modern::Perl
омг, небось как посмотришь на такой код так потом уснуть не сможешь
источник

A

Alexander in Modern::Perl
Я как-то замерял бенчмарками скорость constant и Readonly. Второй оказался быстрее на десятки процентов.
Спасибо, мне такая слоупочность из коробки не нужна
источник

a

allter in Modern::Perl
В каком контексте быстрее? Скорость компиляции? Они же вроде для разного.
источник

A

Alexander in Modern::Perl
Скорость обращения
источник

A

Alexander in Modern::Perl
В ридонли создаётся переменная, которую ты не можешь переназначить, а в constant у тебя происходит вызов функции, который по определению медленнее
источник

a

allter in Modern::Perl
Так ведь константа имеет бесконечную скорость обращения. Там же значение в компайл тайме инлайнится.
источник

A

Alexander in Modern::Perl
Я не знаю что там куда инлайнится, ради интереса гляну завтра в дебаггере. Как по мне, constant - это тупой вызов функций при каждом обращении к «константе»
источник