我需要使用DBI连接对象序列化一个数组,以使用共享内存与其他进程共享。但反序列化不起作用。
使用可存储的qw / freeze thaw /;
my @connections;
for(my $c = 0;$c < 5;$c++) {
my $conn = DBI->connect($dsn,$user,$password,{'AutoCommit' => 1, 'RaiseError' => 1, 'PrintError' => 0});
push(@connections,$conn);
}
my $shm = freeze(@connections);
my $obj = thaw($shm);
返回错误: 全局符号
&#34; $ DRH&#34;需要明确的包名(你忘了宣布&#34;我的 $ drh&#34;?)(eval 33)第6行。
答案 0 :(得分:12)
您无法序列化数据库句柄/连接,因为它包含Storable无法访问的用户空间数据(即Perl之外和数据库库内部,也可能在TLS库中)以及文件描述符等内核数据。