[Moscow.pm] List::Util, Scalar::Util, а вот как?

Ivan Petrov i.petro.77.00 на gmail.com
Чт Июн 9 03:49:38 PDT 2011


в ходе обсуждения List::Util вспомнился вопросик.

Имеем некий класс

 $self = что-то блеснутое;

хотим сериализовать это что-то и положить в виде хеша или массива в
БД.

вопрос: можно ли из блесснутой ссылки выколупать объект не делая нечто
вроде

if (reftype($self) eq 'HASH') {
    $to_dump = { %$self };
} elsif(reftype($self) eq 'ARRAY') {
    $to_dump = [ @$self ];
} else {
    $to_dump = $$self;
}

и соответственно тот же вопрос на тему: если $to_dump содержит
bless'нутые хеши, то тоже самое.

многие сериализаторы банально падают получая объект на вход (как
например некоторые вещи вроде JSON), а некоторые сериализуют
блесснутый и не блесснутый по разному (как например Dumper).

получается точбы подготовить объект к сериализации надо фактически
выполнить полное копирование всех его полей, но ведь объект - просто
блесснутая ссылка на нечто, как отколупать из этой ссылки само нечто
не копируя его?


Подробная информация о списке рассылки Moscow-pm