Size: a a a

2021 May 04

W

Warstone in Modern::Perl
Говорилось что это типа из базы, а в базе у нас обычно напряженка с вложенными хешами.
источник

W

Warstone in Modern::Perl
Так что ТСу может прокатить
источник

W

Warstone in Modern::Perl
Ну а дальше, если не прокатит, - пусть конкретизирует задачу.
источник

d

dpashko in Modern::Perl
Вложенных хешей нет. Плоская.
А вот вариант write_to_file по одному полю мне не подходит. Там дальше json будет...
источник

W

Warstone in Modern::Perl
И что вам мешает писать в файил в JSON формате?
источник

W

Warstone in Modern::Perl
И почему это вам не подходить, если JSON::XS делает, фактически, так-же.
источник

d

dpashko in Modern::Perl
Да ничего не мешает, я так и пишу. Но надо зачистить undef-значения перед encode_json.
источник

W

Warstone in Modern::Perl
Я вам уже показал как это сделать. Как плюс - можете не использовать encode_json. Если прямо хочется - переливайте в новый хеш и уже на нем encode_json делайте.
источник

AP

Anton Petrusevich in Modern::Perl
сделать новый хеш из старого пейргрепом и заенкодить джейсон
источник

AP

Anton Petrusevich in Modern::Perl
$ perl -MList::Util=pairgrep -MJSON -E '%h=(s=>undef, r=>23, ll=>99, tt=>undef); say encode_json +{pairgrep {defined $b} %h}'
{"r":23,"ll":99}
источник

AP

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

SZ

Sergey Zhmylove in Modern::Perl
Какое соотношение ундеф ко всем полям? Если ундефов много, то лучше копипастить грепом
источник

d

dpashko in Modern::Perl
Много. Где-то с cотню полей, больше половины undef.
источник

IB

Ivan Bessarabov in Modern::Perl
Я предлагаю все-таки профилировать =)
источник

IB

Ivan Bessarabov in Modern::Perl
Все-таки мне кажется что это не является узким местом =)
источник

SZ

Sergey Zhmylove in Modern::Perl
У вайла минусы: надо сериализатор самому писать и не факт, что это будет быстро. Короче я за греп :)
источник

SZ

Sergey Zhmylove in Modern::Perl
++
источник

AP

Anton Petrusevich in Modern::Perl
ага, я тож про это сказал. имеет смысл сериализацию скаляра тогда на иксесе сделать :)
источник

AP

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

YK

Yegor K in Modern::Perl
use List::Util 'pairgrep';
write_to_file(+{ pairgrep { defined $b } %$hashref });
источник