Вы должны назначить список.
my $date = Calendar->new_from_Gregorian((localtime)[4] + 1, (localtime)[3], (localtime)[5]+1900);
my $string = freeze $date;
say $string;
my( $olddata ) = thaw $string;
say $olddata->date_string;
Ожидается заморозка нескольких объектов:
use Business::ISBN;
use Calendar;
use Data::Dumper;
use FreezeThaw qw(freeze thaw);
my $isbn = Business::ISBN->new( '0596004923' );
my $date = Calendar->new_from_Gregorian((localtime)[4] + 1, (localtime)[3], (localtime)[5]+1900);
my $string = freeze( $date, $isbn );
say $string;
my( $olddata, $oldisbn ) = thaw $string;
say $olddata->date_string;
say $oldisbn->as_string;
Оператор return
в thaw
оканчивается на:
return @$ref;
В скалярном контексте это число равно количеству элементов в массиве, поэтому вы получаете 1
, когда ожидаете объект. Вам не нужно знать об этом, и FreezeThaw должен предупредить вас, что вы назвали это неправильно. Это разница между этими двумя:
my $value = return_array();
say "Return array: $value"; # 3
$value = return_list();
say "Return list: $value"; # Roscoe
sub return_array {
my $array = [ qw(Buster Mimi Roscoe) ];
return @$array;
}
sub return_list {
return qw(Buster Mimi Roscoe) ;
}