Size: a a a

2020 December 15

a

allter in Modern::Perl
Павел Колганов ☭
Андрей, видимо, пытался вопрос поставить шире. Попробую оригинал сформулировать:

Есть задача транслитерировать по динамическому шаблону tr/$from/$to/. Perldoc говорит eval "tr/$from/$to/".
Код прогоняется Perl::Critic. Политика ProhibitStringyEval запрещает такие eval, как небезопасные.
Мы с коллегой с ходу решения лучше, чем сделать модуль для всяких хаков (с исключением из проверки) и запихнуть туда функцию обертку над eval(tr/$from/$to/) не придумали.
Может быть, есть другие решения?
В общем-то правильная политика, учитывая то, что вам надо валидировать $from / $to, что бы безопасно использовать их внутри eval "".

Если вам не критична производительность, я бы остановился на варианте с разбиением по символам и трансляцией через хэш. Учитывая, что вы там втроём сами не можете решить этот вопрос. Но вообще странная задача. tr нужен ооочень редко.
источник

AP

Anton Petrusevich in Modern::Perl
задача нормальная. вопрос насколько критично прямо вот быстродействие. я бы на инлайн-си сделал бы уж тогда.
источник

AP

Anton Petrusevich in Modern::Perl
особенно, если известно, что заменяемые символы влазят в 8 бит...
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
особенно, если известно, что заменяемые символы влазят в 8 бит...
Известно, что нет, судя по комментам про ascii выше
источник
2020 December 16

meridian.s Мухин Яро... in Modern::Perl
Здравствуйте
источник

meridian.s Мухин Яро... in Modern::Perl
Sergey Zhmylove
Ты можешь мой код проверить критиком, пожалуйста?
Завтра проверю и скажу.
источник

sA

saintserge Andreev in Modern::Perl
привет. у меня моджолишис на установленный на виртуалке в вагранте. и проброс портов с хост на гостевую машину. Почему то morbo работает а hypnotoad нет. я видимо что то простое из вида упускаю?
источник

sA

saintserge Andreev in Modern::Perl
порт и хост одинаковый
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
Известно, что нет, судя по комментам про ascii выше
еле нашёл этот каммент: "...но не умеет за пределами ASCII работать.". тут не ясно, речь о кодах выше 127 или за пределами 255. в общем, если речь не о "в общем", а о конкретных пределах, то можно "хакнуть" в плане использования массива вместо хеша. можно даже и без иксес.
источник

sA

saintserge Andreev in Modern::Perl
saintserge Andreev
привет. у меня моджолишис на установленный на виртуалке в вагранте. и проброс портов с хост на гостевую машину. Почему то morbo работает а hypnotoad нет. я видимо что то простое из вида упускаю?
мда, перевесил гипножабу на другой порт, заработало
источник

a

allter in Modern::Perl
Собираюсь выложить свой велосипед с pure-perl сахарком для async comprehensions на CPAN.
Любителей промисов приглашаю высказать соображения/поревьюить. http://prepan.org/module/nYmTLYacp1Q
источник

AP

Anton Petrusevich in Modern::Perl
как оно работает? как сохраняется стейт интепретатора в точке решеделинга?
источник

b

basiliscos in Modern::Perl
allter
Собираюсь выложить свой велосипед с pure-perl сахарком для async comprehensions на CPAN.
Любителей промисов приглашаю высказать соображения/поревьюить. http://prepan.org/module/nYmTLYacp1Q
да, ничего не понятно.

as { [ @$_{ qw(v1 v2) } ] },


что это делает? Хотелось бы законченный пример с ивент-лупом...
источник

SZ

Sergey Zhmylove in Modern::Perl
allter
Собираюсь выложить свой велосипед с pure-perl сахарком для async comprehensions на CPAN.
Любителей промисов приглашаю высказать соображения/поревьюить. http://prepan.org/module/nYmTLYacp1Q
Если у тебя на сране планируется только документация с указанной страницы, то это уг. Ты хоть что-то в ридми напиши. А вообще рекомендую pod2markdown, тогда документацию придется писать только в одном месте (коде).
Из ридми на пару предложений вообще не понятно, что за модуль и как он может кому-то пригодиться в жизни.

Не понятно, что такое _dop когда читаешь сверху вниз. Добавь хотя бы однострочный коммент чтобы было понятно.
В стр.54 для старых перлов нужно добавить явное определение sub _dop;
Ещё может сразу уйти от dclone?
В чём смысл: unless ( $cb_chainer ) {
 unshift @_, $promise;
? Что если то, что попало в $promise не умеет в then?
Типа async as {bless [13], "main"};
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
как оно работает? как сохраняется стейт интепретатора в точке решеделинга?
Да никак оно не работает, там тупо синтаксический сахар, а именно список промисов, которые возвращают значения в хеш. Проверяется, что значения не перекрывают друг друга и, в общем-то, всё :)
источник

a

allter in Modern::Perl
Anton Petrusevich
как оно работает? как сохраняется стейт интепретатора в точке решеделинга?
По сути, это просто сахарок для цепочки ->then(sub { my $v1 = shift; ... } ).
Только цепочка правильная с точки зрения ошибки.
Стекобезопасность зависит от того, как конкретный промис реализован.
источник

a

allter in Modern::Perl
basiliscos
да, ничего не понятно.

as { [ @$_{ qw(v1 v2) } ] },


что это делает? Хотелось бы законченный пример с ивент-лупом...
Ну, это просто трансформирует $_ -> массив значений оттуда. Причём код внутри {} подвешивается до момента, когда он нужен. С хэлпами, конечно, беда, надо будет примеров в доку и тестов добавить.
источник

b

basiliscos in Modern::Perl
короче, нужен законченный пример. Так ничего не потяно. Особенно тем, кто с async/await не оч. знаком
источник

a

allter in Modern::Perl
> sub _dop;
это для каких-то совсем старых? Это же и есть определение. Не понятно, зачем объявлять ещё.
источник

SZ

Sergey Zhmylove in Modern::Perl
allter
> sub _dop;
это для каких-то совсем старых? Это же и есть определение. Не понятно, зачем объявлять ещё.
Затем что перл добавляет определение функции только когда доходит до конца выражения. А у тебя _dop используется из неё же. Поскольку перл ещё не дошел до }, он не будет знать, что такое _dop
источник