use strict; use warnings; use 5.010; use YAML qw/Dump Bless Load/; use Data::Dumper; { package Foo; use Moose; has foo => ( is => 'rw', isa => 'Any' ); has bar => ( is => 'rw', isa => 'Any' ); } my $foo = Foo->new( foo => 'fooValue', bar => 'barValue' ); print 'Dumper original object: ', Dumper(\$foo); my $yaml_foo = Dump $foo; # Serialize object to YAML my $other_foo = Load ($yaml_foo); # Deserialize to Foo say 'Dumper new object: ',Dumper(\$other_foo); say $other_foo->isa('Foo') ? 'I am a Foo!' : 'I do not know what I am.';