2017-07-14 35 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