[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