Size: a a a

2020 January 27

EG

Emmanuel Goldstein in Modern::Perl
Roman
Зависимостей бояться, код не писать.
Копипастишь модуль к себе, и никаких зависимостей.
Мне очень хочется для этого скрипта оставаться в пределах одного файла, потому что его регулярно приходится притягивать курлом.
источник

EG

Emmanuel Goldstein in Modern::Perl
Да и зачем для этого зависимость, если это делается в пару строчек.
источник

R

Roman in Modern::Perl
Копипасть как угодно, хоть в один файл. Перл и не такое стерпит.
источник

EG

Emmanuel Goldstein in Modern::Perl
Roman
Копипасть как угодно, хоть в один файл. Перл и не такое стерпит.
Но зачем?
источник

R

Roman in Modern::Perl
Да, действительно, думай сам. )
источник

EG

Emmanuel Goldstein in Modern::Perl
Весь код «декоратора» выглядит так:
use Attribute::Handlers;

sub decorator : ATTR(CODE) {
   my ($package, $symbol, $referent) = @_;
   no warnings 'redefine';
   *{ $symbol } = sub {
       # replacement code
   }
}
источник

EG

Emmanuel Goldstein in Modern::Perl
Ещё вопрос: детерменирован ли порядок исполнения атрибутов? Если у меня есть сабрутина :first :second, правда ли, что :first будет вызван до :second всегда?
источник

EG

Emmanuel Goldstein in Modern::Perl
(При условии, что фаза нигде явно не задана)
источник

R

Roman in Modern::Perl
Я бы начал с проверки порядка сканирования функций, иначе нет гарантии порядка исполнения.
источник

AK

Andrey Konovalov in Modern::Perl
Кстати, раз уж зашла речь о всяких малоиспользуемых, но интересных фичах:
кто-нибудь в курсе, есть что-то подобное Moo, использующее внутри себя Sentinel и соотв. позволяющее делать lvalue-присваивание как во всех нормальных ООП-языках:
$inst->attr = $value;
?
источник

EG

Emmanuel Goldstein in Modern::Perl
Andrey Konovalov
Кстати, раз уж зашла речь о всяких малоиспользуемых, но интересных фичах:
кто-нибудь в курсе, есть что-то подобное Moo, использующее внутри себя Sentinel и соотв. позволяющее делать lvalue-присваивание как во всех нормальных ООП-языках:
$inst->attr = $value;
?
Что тебе мешает сделать просто lvalue-функцию?
источник

EG

Emmanuel Goldstein in Modern::Perl
Хотя стандартный для Perl стиль $inst->attr($value) мне кажется даже в чём-то элегантнее, так как позволяет чейнить присваивания.
источник

R

Roman in Modern::Perl
Есть люди, которым хочется "красиво" любой ценой  )
источник

VG

Vadim Goncharov in Modern::Perl
$inst->{attr} = $value; и не ебать моск
источник

R

Roman in Modern::Perl
$inst->{aatr} - уже ебет
источник

R

Roman in Modern::Perl
вызов несуществующего метода - фатальная ошибка
источник

VG

Vadim Goncharov in Modern::Perl
для этого есть рестриктед хэши, хоть прям из коробки use fields
источник

EG

Emmanuel Goldstein in Modern::Perl
Andrey Konovalov
Кстати, раз уж зашла речь о всяких малоиспользуемых, но интересных фичах:
кто-нибудь в курсе, есть что-то подобное Moo, использующее внутри себя Sentinel и соотв. позволяющее делать lvalue-присваивание как во всех нормальных ООП-языках:
$inst->attr = $value;
?
Я так и не понял, в чём проблема.
https://perlbanjo.com/f6a60586fb
источник

EG

Emmanuel Goldstein in Modern::Perl
lvalue-сабрутины работают из коробки
источник

AK

Andrey Konovalov in Modern::Perl
Emmanuel Goldstein
lvalue-сабрутины работают из коробки
Работают-то работают, но как-то не так, как надо для объектов. Я в своё время копал эту проблему довольно подробно.
источник