可以在进程之间传递Perl哈希引用吗?

我有一个ActiveState PerlCtrl项目。我想知道是否有可能在COM DLL中有一个哈希值,将它的ref作为字符串传递给调用进程(例如“HASH(0x2345)”)然后将该字符串传递回COM DLL并以某种方式祝福它回到指向相关的哈希。 使用
return "" . %Graph;
获得hashref似乎很容易,我尝试过像
$Graph = shift; $Graph = bless {%$Graph};
这样的东西,但它们似乎没有实现我所追求的目标。 %Graph哈希至少对模块是全局的。 测试代码(VBScript):
set o = CreateObject("Project.BOGLE.1")
x = o.new_graph()
wscript.echo x
x = o.add_vertex(x, "foo")
    
已邀请:
如果这些是不同的进程,则需要序列化哈希的内容或将其持久存储在磁盘文件中。要做前者,请参阅Storable或Data :: Dumper;对于后者,它取决于它是简单标量的散列还是更复杂的散列。 如果在同一个进程中它是相同的perl解释器,你可以保留一些全局变量,如%main :: hashes; 在将字符串化引用传递回调用进程之前设置
$main::hashes{%Graph} = %Graph
,然后使用它来查找实际的哈希引用。 不过,请不要这样做:http://perlmonks.org/?node_id = 379395。     
不,您无法在进程之间可靠地传递哈希引用。     

要回复问题请先登录注册