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