2017-07-14 10 views
1

UNIXソケットを介してサーバーと通信しています。サーバーは空行( "\ n")で通信を終了します。私のクライアントプログラムは次のようになります:Perl:最後にwhileループが途切れることはありません

while (my $result = <$sock>) { 
    print $result; 
    last unless (chomp $result); 
} 
close $sock; 

しかし、私は決してwhileループから抜け出ているようです。私はCtrl-Cを出さなければならない。これはなぜですか、どうすれば解決できますか?

答えて

1

chompは削除された文字の総数を返します。したがって、行に改行が含まれている場合、常に真の値を取得します。

よう 使用何かlast if ($result =~ /^\n$/);

+1

$は\ nはとにかく探します。 –

+1

@Сухой27、いいえ、それはありません。 '$ result =〜/^$ /'は空文字列とLFだけを含む文字列の両方にマッチします。あなたに気をつけて、それはおそらく最高です。 – ikegami

関連する問題