#!/usr/bin/env perl use Data::Dx; use Dios { accessors => 'unified' }; use Storable; use Test::Expr; #use strict; # made redundant by use 5.014_00 #use warnings; # made redundant by use 5.014_00 <========= INCORRECT see post below! use 5.014_00; class Nada { has Int $.number is rw; }; class Yada { has Int $.number is rw; has Nada @.nadas is rw; }; # class Yada: sub test_our_yada { my $self=shift; ok $self->isa('Yada'); ok $self->number() == 0; ok @{$self->nadas()} == 2; Dx $self->nadas(); ok $self->nadas()->[0]->number() == 1; ok $self->nadas()->[1]->number() == 2; } { # The "initial" Yada my $yada=Yada->new(number=>0,nadas=>[Nada->new(number=>1),Nada->new(number=>2)]); $yada->main::test_our_yada(); # Serialize $yada and write it to 'Yada.dat' my $dump=$yada->dump(); # NB: Without an argument! store($dump,'Yada.dat'); } { # The restored from 'Yada.dat' Yada object my $dump=retrieve('Yada.dat'); my $yada=Object::InsideOut->pump($dump); $yada->main::test_our_yada(); } done_testing;