3
したがって、whileループでソケットをループするときにこの問題が発生します。chomp()を使用すると印刷が失敗する
これを使用すると完全に正常に動作しますが、私には望ましくないすべての$message
に改行があります。
my $socket = new IO::Socket::INET (
LocalHost => "127.0.0.1",
LocalPort => "12345",
Proto => 'tcp',
Listen => 1,
Reuse => 1
);
my $client = $socket->accept();
while(<$client>) {
my $message = $_;
print $message;
}
しかし、私は(私は理由を理解)クライアントを切断すると、ループが終わっのみムシャムシャ食べるを追加します。 私の推測では、chompは$_
変数から改行を削除するので、ループはもはや機能しません。
my $socket = new IO::Socket::INET (
LocalHost => "127.0.0.1",
LocalPort => "12345",
Proto => 'tcp',
Listen => 1,
Reuse => 1
);
my $client = $socket->accept();
while(<$client>) {
my $message = $_;
chomp($message);
print $message;
}
だから私の質問は:どのようにメッセージに改行をせずにソケットを通じ、私はループ(改行は終了)できますか?
ありがとうございました!
私が知ったことは、$ messageを印刷するときです。 "\ n"; が動作します。 これはこれに関連していますか? –
答えをいただきありがとうございます。あなたのソリューションは機能しました。 Imは今や疑問に思っています。他のループと連携して処理しますか? –
@JamieFlowers何かを 'print'すると、それはシェルのプリントバッファに送られます。このバッファは、改行が現れるまで実際には印刷されません。それは実際のエラーではなく、単に遅れです。 – TLP