メモリの場所がある場合、Net::Telnet 接続を再作成することは可能ですか?
Net::Telnet=GLOB(0x1b50ff0) 文字列を Net::Telnet オブジェクトに戻すにはどうすればよいですか?
ありがとう。
メモリの場所がある場合、Net::Telnet 接続を再作成することは可能ですか?
Net::Telnet=GLOB(0x1b50ff0) 文字列を Net::Telnet オブジェクトに戻すにはどうすればよいですか?
ありがとう。
アップデート
あなたがやろうとしているコメントから見えるように、オブジェクトを2つの別々のプロセスで再利用することはできません - 一方は他方のメモリ/アドレス空間を見ません。次の 3 つのいずれかのみを実行できます。
別のプログラムで他のオブジェクトの複製となるようにオブジェクトを最初から再作成します。ただし、オブジェクトのクラスがシリアライゼーション/デシリアライゼーションをサポートしている場合のみです (通常は、Data::Dumper、Storable、またはその他のメソッドを使用してオブジェクトの状態を保存することによって行われます)。 . Net::Telnet がそのように処理できるかどうかはわかりません。
明確にするために、2 番目のプログラムは、逆シリアル化されたオブジェクトの COPY を取得しますが、これは元のオブジェクトとは何の関係もありません。
クライアントがサーバーと通信し、Telnet コマンドを送信できるようにします。サーバーはこれを Net::telnet オブジェクトに渡し、クライアントに結果を伝えます。基本的に、サーバーはクライアントの telnet プロキシとして機能します。私の元の回答のレジストリの説明で述べたように、クライアントは ID を介してサーバーの Net::Telnet オブジェクトを参照する必要があります。
クライアントとサーバーが同じ物理サーバー上にある場合は、共有メモリを使用して Net::Telnet オブジェクトを格納します。
元の答え
参照を非文字列化するAcme::Refを見てみることができます...私はそれを使用したことがないので、うまく動作するか、特に Net::telnet で動作するかは保証できません。
これを行う必要がある場合、根本的な問題に正しい解決策を適用していない可能性が高いという上記のコメントに同意します。高レベルを達成しようとしていることの詳細を提供すると役立ちます。
オブジェクト参照とは対照的に、文字列化された参照を扱う必要はほとんどありません。独自のプロセスの境界内にいる場合は、オブジェクト参照を渡すことができます (または、本当に必要な場合はグローバルにします)。ある種のプロセス間通信を使用していて、外部プロセスがプログラム内の Net::Telnet オブジェクトの 1 つを参照する必要がある場合は、Net::Telnet オブジェクトのレジストリを作成する必要があります (単なる配列である可能性があります)。レジストリ内のインデックスによってそれらを参照します。