this works but it uses a regex and eval
#!/usr/bin/env perl
package Deblessify;
use strictures 2;
use feature 'say';
use Data::Dumper;
use YAML::Tiny;
use Moo;
use MooseX::MungeHas 'is_rw';
# attrs
has 'abc';
has 'def';
has 'foo';
has 'bar';
has 'name';
run();
sub run
{
my $self = __PACKAGE__->new;
$self->abc({aaa => 123, bbb => 456,});
$self->def([qw/123 456 789 abc def ghi jkl mno/]);
$self->foo('foo bar baz xyzzy');
$self->bar(123.456789);
$self->name('testfile');
$self->deblessify;
}
sub deblessify
{
my ($self) = @_;
my $dumpstr = Dumper($self);
say "dumpstr = $dumpstr";
$dumpstr =~ s/^(\$VAR.*? =) bless\(/\$deblessed_obj =/;
$dumpstr =~ s/\s*?},\s+'.*?'\s+\);$/};/;
say "new str = $dumpstr";
my $deblessed_obj = '';
eval $dumpstr;
say "deblessified obj: $deblessed_obj";
my $yaml = YAML::Tiny->new($deblessed_obj);
my $filename = $self->name . ".yaml";
$yaml->write($filename);
}
1;
__END__