2011-01-28 4 views
1

ActiveState PerlCtrl 프로젝트가 있습니다. 나는 COM DLL에 해시를 가질 수 있는지 알고 싶습니다. 호출 프로세스에 문자열 (예 : "HASH (0x2345)")을 전달한 다음 해당 문자열을 COM DLL에 다시 전달합니다. 어떻게 든 관련 해시를 가리 키도록 축복하십시오.프로세스간에 Perl 해시 참조를 전달할 수 있습니까?

해시를 얻는 것은 return "" . \%Graph;을 사용하여 충분히 쉽게 보이고 $Graph = shift; $Graph = bless {%$Graph};과 같은 것을 시도했지만 그들은 내가 한 것을 달성하지 못했습니다. % 그래프 해시는 적어도 모듈에 대한 전역입니다.

테스팅 코드 (VBScript를)

set o = CreateObject("Project.BOGLE.1") 
x = o.new_graph() 
wscript.echo x 
x = o.add_vertex(x, "foo") 

답변

0

아니, 당신은 안정적으로 프로세스 간의 해시 참조를 전달할 수 없습니다.

4

다른 프로세스 인 경우 해시 내용을 직렬화하거나 디스크 파일에 영구 저장해야합니다. 이전 작업을 수행하려면 Storable 또는 Data :: Dumper를 참조하십시오. 후자의 경우 단순한 스칼라의 해시인지 더 복잡한 지 여부에 따라 다릅니다.

동일한 프로세스에서 동일한 perl 인터프리터 인 경우 % main :: hashes와 같은 일부 전역 변수를 유지할 수 있습니다. $main::hashes{\%Graph} = \%Graph으로 설정 한 다음 문자열 참조를 다시 호출 프로세스로 전달한 다음 나중에이를 사용하여 실제 해시 참조를 조회합니다.

그래도하지 마십시오 : http://perlmonks.org/?node_id=379395.

+0

기본적으로 동일한 과정입니다. – bugmagnet