#!/usr/bin/perl use strict; use Data::Revive; package Nothing; sub foo { print "foo method called\n"; } package main; use Data::Dumper; $Data::Dumper::Purity = 1; print "--- Test Object ---\n"; my $sample_obj = { 'foo' => { 'bar' => [0,1,2,3,4] }, 'baz' => 12, 'quux' => "string", 'quuux' => undef }; $sample_obj->{quuuux} = $sample_obj; my $sample_text = Dumper($sample_obj); print $sample_text; print "\n\n"; print "--- Revived Object ---\n"; my $loaded_obj = Data::Revive::revive_object($sample_text); print Dumper($loaded_obj); print "\n\n"; print "--- Revived Object with added Opcode ---\n"; my $sample_text2 = Dumper(bless($sample_obj, 'Nothing')); my $loaded_obj2 = Data::Revive::revive_object($sample_text2, [qw(bless)]); print Dumper($loaded_obj2); $loaded_obj2->foo(); print "\n\n"; print "--- Revived Object with (intentional) failed Opcode ---\n"; # note, bless not allowed this time $loaded_obj2 = Data::Revive::revive_object($sample_text2); print Dumper($loaded_obj2); print "\n\n";