我想使用 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
子程序中做错了什么吗?
我知道模块版本与问题无关。