如何从HashRef中的FileHandle读取行



我有一个hashref中的套接字: $self->{socket}
我想使用$line = <$self->{socket}>从中读取它,但是我会收到语法错误。

现在,我知道

print {$self->{socket}} "Hello";

会照顾印刷,但

$line = < {$self->{socket}} >;

不起作用。

我如何做到这一点,而不会像这样混乱我的代码:

$fh = $self->{socket};
$line = < $fh >;

谢谢。

尝试使用 readline,如http://www.perlmonks.org/?node_id = 776168所述,它仍然分配给$_并将其定义为已定义。

>> >
$ perl -MO=Deparse -e'while (readline($fh)) {}'
while (defined($_ = <$fh>)) {
    ();
}
-e syntax OK
  • <fh>readline(fh)
  • 是短的
  • <$fh>readline($fh)
  • 的缩写
  • <...>的缩写是glob(qq<...>)

快捷方式不可能解决,因此请使用长形式。

readline($self->{socket})

最新更新