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

时间:2011-01-28 05:36:46

标签: perl hash activestate

我有一个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")

2 个答案:

答案 0 :(得分:4)

如果这些是不同的进程,则需要序列化哈希的内容或将其持久存储在磁盘文件中。要做前者,请参阅Storable或Data :: Dumper;对于后者,它取决于它是简单标量的散列还是更复杂的东西。

如果在同一个进程中它是相同的perl解释器,你可以保留一些全局变量,如%main :: hashes; 在将字符串化引用传递回调用进程之前设置$main::hashes{\%Graph} = \%Graph,然后使用它来查找实际的哈希引用。

不要这样做:http://perlmonks.org/?node_id=379395

答案 1 :(得分:0)

不,您无法在进程之间可靠地传递哈希引用。