Size: a a a

2020 January 05

SU

Someone Unknown 🇭🇷 in Modern::Perl
Коммутативность переоценена
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
Ivan Bessarabov
Может быть фот этот фрагмент perldoc perlfunc даст ответ на вопрос
https://perldoc.perl.org/perlfunc.html

> Any function in the list below may be used either with or without parentheses around its arguments. (The syntax descriptions omit the parentheses.) If you use parentheses, the simple but occasionally surprising rule is this: It looks like a function, therefore it is a function, and precedence doesn't matter. Otherwise it's a list operator or unary operator, and precedence does matter. Whitespace between the function and left parenthesis doesn't count, so sometimes you need to be careful:
Даже ещё хуже, оно посчитало, что *$val — это глоб, который является аргументом rand()
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
И да, perl -w было достаточно. Я почему-то так привык полагаться на use common::sense, что думал, что уж про такую-то фигню мне точно сообщат
источник

IB

Ivan Bessarabov in Modern::Perl
perl -e 'my @x = (1); my $i = int(rand * @x);'  
Warning: Use of "rand" without parentheses is ambiguous at -e line 1.
syntax error at -e line 1, near "x)"
Execution of -e aborted due to compilation errors.


я что-то подтупливаю - в чём именно компилятор усмотрел неоднозначность?
источник

IB

Ivan Bessarabov in Modern::Perl
Не так давно было очень похожее
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
Ivan Bessarabov
perl -e 'my @x = (1); my $i = int(rand * @x);'  
Warning: Use of "rand" without parentheses is ambiguous at -e line 1.
syntax error at -e line 1, near "x)"
Execution of -e aborted due to compilation errors.


я что-то подтупливаю - в чём именно компилятор усмотрел неоднозначность?
Сделай perl -Mdiagnostics -e 'my @x = (1); my $i = int(rand * @x);', оно подробно расскажет
В целом это то самое, что ты кидал выше — rand без скобок работает как унарный оператор, и оно не понимает, что ему делать с унарным оператором, за которым идёт бинарный оператор
источник

MD

Mihail Dvornikov in Modern::Perl
Миграция web-приложения (perl 5.18->5.26). База PgSQL в кодировке UTF-8.
В базу попадают такие данные 3-пÑ\u0080имеÑ\u0080, из базы через json {"name":"\u0424\u043e\u0440} и в браузере перекодируются в нормальный текст.
Template->new( добавил ENCODING => 'utf8'). Что еще посмотреть?
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
Насколько я понимаю, проблема была в unicode_strings feature, которую подключает use 5.26.0: https://perldoc.perl.org/5.30.0/feature.html#The-'unicode_strings'-feature

use feature 'unicode_strings' tells the compiler to use Unicode rules in all string operations executed within its scope (unless they are also within the scope of either use locale or use bytes ). The same applies to all regular expressions compiled within the scope, even if executed outside it. It does not change the internal representation of strings, but only how they are interpreted.
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
Someone Unknown 🇭🇷
Насколько я понимаю, проблема была в unicode_strings feature, которую подключает use 5.26.0: https://perldoc.perl.org/5.30.0/feature.html#The-'unicode_strings'-feature

use feature 'unicode_strings' tells the compiler to use Unicode rules in all string operations executed within its scope (unless they are also within the scope of either use locale or use bytes ). The same applies to all regular expressions compiled within the scope, even if executed outside it. It does not change the internal representation of strings, but only how they are interpreted.
@mdvor707 оно?
источник

MD

Mihail Dvornikov in Modern::Perl
Не влияет на результат.
источник

AP

Anton Petrusevich in Modern::Perl
на дабл енкодинг похоже
источник

MD

Mihail Dvornikov in Modern::Perl
Старые данные в базе нормально читаются, но после смены версии perl данные записываются измененными.
источник

AP

Anton Petrusevich in Modern::Perl
в какой то момент времени лишняя кодировка в ютф8 происходит
источник

SU

Someone Unknown 🇭🇷 in Modern::Perl
Mihail Dvornikov
Не влияет на результат.
А выключать пробовал? no feature 'unicode_strings' ?
источник

MD

Mihail Dvornikov in Modern::Perl
Оба варианта пробовал и use feature ":5.18.2".
источник

MD

Mihail Dvornikov in Modern::Perl
В таблице два вида записей: 1. читаемые, 2. в виде крякозябр (добавлены в новой версии Perl).
В Firefox передается вся таблица и различий между ними не видно :)
источник

AP

Andrei Protasovitski in Modern::Perl
Я не знаю, как именно в постгресе это происходит, у меня была похожая проблема с мускулом. Решилось настройкой мускула и драйвера. По ходу дела выяснилось, что старые настройки были неверные. Что именно там было, не помню уже. Суть была в том, что старые настройки были неверны, и текст в базе был не в юникоде. Хотя отображалось всё правильно. Были глюки с поиском, но поскольку кириллицы не было, были только умляуты, то было некритично. После исправления настроек базы и драйвера и после обновления данных поиск начал работать правильно.
источник

AP

Anton Petrusevich in Modern::Perl
$ perl -MEncode -E '$a="поимел"; $a8 = encode("UTF-8", $a); $a88 = encode("UTF-8", $a8); $b88 = decode("UTF-8", $a88); $b8 = decode("UTF-8", $b88); say $b88; say $b8'
поимел
поимел
источник

AP

Anton Petrusevich in Modern::Perl
п — похожая часть
источник

AP

Anton Petrusevich in Modern::Perl
на самом деле, это какой-то современный перл, в более раннем у меня двойной декодинг ломался на некоторых симолах, как тут:
$ perl -MEncode -E '$a="пÑ\u0080имеÑ\u0080"; say decode("UTF-8", $a)'
п�0080име�0080
источник