如何从 hashref 中的文件句柄中读取一行

How to read a line from a filehandle in a hashref

我在 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})