【问题标题】:Can one pass Perl hash references between processes?可以在进程之间传递 Perl 哈希引用吗?
【发布时间】:2011-01-28 05:36:46
【问题描述】:

我有一个 ActiveState PerlCtrl 项目。我想知道是否有可能在 COM DLL 中有一个散列,将其作为字符串传递给调用进程(例如“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")

【问题讨论】:

    标签: perl hash activestate


    【解决方案1】:

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

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

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

    【讨论】:

    • 过程基本相同。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2014-12-18
      • 2011-05-08
      • 2021-04-01
      相关资源
      最近更新 更多