Я хочу вставить хэш в БД, используя Storable :: nfreeze, но данные вставлены неправильно.
Мой код выглядит следующим образом:
%rec=();
$rec{'name'} = 'my name';
$rec{'address'} = 'my address';
my $order1 = new Order();
$order1->set_session(\%rec);
$self->createOrder($order1);
sub createOrder {
my $self = $_[0];
my $order = $_[1];
# Retrieve the fields to insert into the database.
my $st = $dbh->prepare("insert into order (session,.......) values(?,........)");
my $session = %{$order->get_session()};
$st->execute(&Storable::nfreeze(\%session),.....);
$st->finish();
}
sub getOrder
{
...
my $session = &Storable::thaw( $ref->{'session'} );
.....
}
thaw
работает нормально, потому что я проверил его с некоторыми правильно вставленными строками, но когда я пытаюсь получить строку, вставленную с помощью подпрограммы createOrder
, я получаю сообщение об ошибке:
Сохраняемое двоичное изображение v36.65, более новое, чем я (v2.7), в строке blib / lib / Storable.pm (автоматическое разбиение на строку blib / lib / auto / Storable / thaw.al) 415
Ошибка исходит от строки, которая имеет thaw
. nfreeze
неправильно сохранил хэш.
Может кто-нибудь указать мне, что я делаю неправильно в подпрограмме createOrder
?
Я знаю, что версия модуля не имеет отношения к проблеме.