두 개의 소켓과 acta에서 스위치로 메시지를주고받는 Perl 프로그램을 작성 중입니다. 한 소켓에서받은 수신 메시지를 수정하고 데이터에 3 바이트를 추가 한 다음 마지막으로 수정 된 메시지를 다른 소켓으로 보내야합니다. select() ... sysread() ... syswrite() 메커니즘을 사용하여 소켓 간의 메시지를 폴링합니다. 받은 메시지는 수정하는 동안 $ buffer에 저장됩니다.Perl에서받은 소켓 메시지를 어떻게 수정할 수 있습니까?
는 지금은 수신 된 메시지를 얻기 위해 다음과 같은 방법을 사용할 수 있습니다
my $hexmsg = unpack("H*", $buffer);
my @msg = ($hexmsg =~ m/../g);
는 내가 @msg하는 3 바이트를 삽입 할 수 있습니다. 그러나 @msg의 메시지를 스칼라 (예 : $ buffer)에 압축하여 syswrite()로 다른 소켓으로 보내는 방법을 모르겠습니다. 아무도 나를 도울 수 있습니까? 미리 감사드립니다.
여기가 $ 버퍼 바이너리의 메시지입니까?
게다가, 나는 시도했다 my $ shexmsg = join ("", @ msg); $ buffer = pack ("X", $ shexmsg); "X"는 "n *", "b *", "u *"와 같은 팩의 템플리트를 나타냅니다. 그러나 모두 실패했습니다 ... 무엇을 해야할지 모르겠군요 ... – boyang