首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用chomp()时打印失败

使用chomp()时打印失败
EN

Stack Overflow用户
提问于 2011-12-28 23:04:31
回答 1查看 263关注 0票数 3

因此,我在使用while循环遍历套接字时遇到了这个问题。

当我使用它时,它工作得很好,但我在每个$message上都有换行符,这是我不想要的。

代码语言:javascript
复制
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时,只有在断开客户端连接时循环才会结束(我理解这是为什么)。我的猜测是,chomp从$_变量中删除了换行符,因此循环将不再工作。

代码语言:javascript
复制
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;
}

所以我的问题是:如何在消息中不包含换行符的情况下循环通过套接字(换行符终止)?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-28 23:12:30

chomp是在$_的副本上生成的,因此它应该完全不会影响套接字句柄。更有可能的是,删除换行符会使print语句在缓冲区中等待,并在脚本终止后执行。

换句话说:这不是一个错误,只是一个延迟。

尝试使用autoflush立即执行打印。

代码语言:javascript
复制
$| = 1;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8657486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档