Perl:不能用last覆盖while循环

时间:2017-07-14 09:33:51

标签: perl while-loop

我正在通过UNIX套接字与服务器通信。服务器用空行终止通信(" \ n")。我的客户端程序如下所示:

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

但我似乎永远不会离开while循环。我必须按Ctrl-C才能离开。为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:1)

chomp返回已删除的字符总数,因此如果该行包含换行符,则始终为true值。 使用像

这样的东西

last if ($result =~ /^\n$/);