1

ActiveState PerlCtrl プロジェクトがあります。COM DLL にハッシュを含めることが可能かどうかを知りたいのですが、その参照を呼び出し元のプロセスに文字列 (例: "HASH(0x2345)") として渡し、その文字列を COM DLL に戻して何らかの方法で渡します。関連するハッシュを指すように戻してください。

ハッシュリファレンスを取得するのは簡単にreturn "" . \%Graph;思え$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")
4

2 に答える 2

4

これらが異なるプロセスである場合は、ハッシュの内容をシリアル化するか、ディスク ファイルに永続的に保存する必要があります。前者を行うには、Storable または Data::Dumper を参照してください。後者の場合、単純なスカラーのハッシュか、より複雑なものかによって異なります。

同じプロセス内の同じ perl インタープリターである場合、%main::hashes のようなグローバル変数を保持できます。$main::hashes{\%Graph} = \%Graph文字列化された参照を呼び出しプロセスに戻す前に設定し、後でそれを使用して実際のハッシュ参照を検索します。

ただし、これを行わないでください: http://perlmonks.org/?node_id=379395

于 2011-01-28T05:41:58.357 に答える
0

いいえ、プロセス間でハッシュ参照を確実に渡すことはできません。

于 2011-01-28T05:39:17.557 に答える