如果我有内存位置,是否可以重新创建Net :: Telnet连接?
如何将Net :: Telnet = GLOB(0x1b50ff0)字符串再次转换为Net :: Telnet对象?
感谢。
答案 0 :(得分:1)
<强>更新强>
你不能在两个独立的进程中重用你的对象,就像你试图做的评论一样 - 一个人看不到对方的内存/地址空间。你只能做以下三件事之一:
从头开始重新创建对象,使其成为另一个程序中另一个对象的副本,但前提是该对象的类支持序列化/反序列化(通常通过使用Data :: Dumper保存对象状态来完成) ,可存储或其他方法)。我不知道Net :: Telnet是否可以这样处理。
为了清楚起见,您的第二个程序将在反序列化后获得对象的COPY,这与原始对象无关。
允许客户端与服务器通信并发送Telnet命令,服务器将其传递给Net :: telnet对象并告知客户端结果。基本上,服务器充当客户端的telnet代理。客户端应通过其ID引用服务器的Net :: Telnet对象,如我原始答案中的注册表说明中所述。
如果客户端和服务器位于同一物理服务器上,请使用shared memory存储Net :: Telnet对象。
原始回答
您可以尝试查看Acme::Ref取消字符串引用的内容......我从未使用它,因此无法保证其运行良好或与Net :: telnet一起使用。
我同意上面发布的评论,如果你需要这样做,你很可能没有对你的根本问题采用正确的解决方案 - 如果你提供了更多关于你想要实现的目标的详细信息,这将有所帮助水平。
您应该几乎不必处理字符串引用而不是对象引用。如果你在你自己的进程的范围内,那么你可以传递对象引用(或者如果你真的必须将其设置为全局)。如果您正在使用某种进程间通信并且外部进程需要引用程序中的Net :: Telnet对象之一,则需要创建Net :: Telnet对象的注册表(可能只是一个数组)和通过注册表中的索引引用它们。