Size: a a a

2019 December 02

AP

Andrei Protasovitski in Modern::Perl
Ivan Bessarabov
https://perlbanjo.com/8b31258ec3 — фигли разный вывод на разных версиях перла?
Вот тебе ответ: https://perlbanjo.com/ccae0891f3
источник

IB

Ivan Bessarabov in Modern::Perl
откуда ты знаешь что проблема из за JSON::PP а не из-за версии перла?
источник

AP

Andrei Protasovitski in Modern::Perl
Потому что Perl так вёл себя примерно с версии 5.006 (раньше я не помню).
источник

AP

Andrei Protasovitski in Modern::Perl
Есть ещё вероятность, что именно в 5.24  что-то сломали.
источник

VG

Vadim Goncharov in Modern::Perl
allter
Век живи, век учись, или занимательная арифметика от Perl 5:

Оказывается, код:
$num2 .= '';
my $num3 = $num2 + 0.01;
не эквивалентен коду:
$num2 .= '';
my $num3 = $num2 + 0.01;
$num2 .= '';

🙈
а в чем разница? (для тех кто с телефона)
источник

a

allter in Modern::Perl
Vadim Goncharov
а в чем разница? (для тех кто с телефона)
Арифметические операции как побочный эффект меняют флаг представления скаляра-аргумента (строка->число).
источник

VG

Vadim Goncharov in Modern::Perl
allter
Арифметические операции как побочный эффект меняют флаг представления скаляра-аргумента (строка->число).
дак и пофиг жы
источник

IB

Ivan Bessarabov in Modern::Perl
Vadim Goncharov
а в чем разница? (для тех кто с телефона)
Вот код

   use JSON::PP;

   warn $JSON::PP::VERSION;

   my $num2 = 3.1415926;
   $num2 .= '';
   warn encode_json {num2 => $num2};

   my $num3 = $num2 + 0.01;
   warn encode_json {num2 => $num2};

До версии 5.26.3 (включительно) этот код выводит

   {"num2":"3.1415926"} at script.pl line 12.
   {"num2":"3.1415926"} at script.pl line 15.

начиная с 5.28.2 во втором json-е число, а не строка:

   {"num2":"3.1415926"} at script.pl line 12.
   {"num2":3.1415926} at script.pl line 15.
источник

VG

Vadim Goncharov in Modern::Perl
а, в json
источник

VG

Vadim Goncharov in Modern::Perl
а я уж было подумал, что-то реально страшное
источник

VG

Vadim Goncharov in Modern::Perl
плюсую ораторов со схемой
источник

a

allter in Modern::Perl
Vadim Goncharov
плюсую ораторов со схемой
С какой схемой?
источник

VG

Vadim Goncharov in Modern::Perl
JSON Schema
источник

IB

Ivan Bessarabov in Modern::Perl
allter
С какой схемой?
источник

VG

Vadim Goncharov in Modern::Perl
или локальные эквиваленты
источник

a

allter in Modern::Perl
А, понятно. Т.е. просто объявлять такое поле как string. Этого тоже хотелось избежать. Т.к. хотелось бы передать другому сервису признак "это число, но закодированное в строку для сохранения точности". А в стандартных схема JSON такой возможности сейчас нет. Т.е. это всё равно костылить ручное приведение на уровне неформальных соглашений.
источник

IB

Ivan Bessarabov in Modern::Perl
allter
А, понятно. Т.е. просто объявлять такое поле как string. Этого тоже хотелось избежать. Т.к. хотелось бы передать другому сервису признак "это число, но закодированное в строку для сохранения точности". А в стандартных схема JSON такой возможности сейчас нет. Т.е. это всё равно костылить ручное приведение на уровне неформальных соглашений.
Ммм?
источник

IB

Ivan Bessarabov in Modern::Perl
Другой сервис же получает только json
источник

IB

Ivan Bessarabov in Modern::Perl
Все остальное — внутри товоего кода
источник

VG

Vadim Goncharov in Modern::Perl
угу, тут родовые травмы JSON
источник