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

时间:2018-02-05 22:50:02

标签: perl href filehandle

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

现在,我知道

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

将负责打印,但

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

不起作用。

如何在不破坏我的代码的情况下执行此操作:

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

感谢。

2 个答案:

答案 0 :(得分:5)

尝试使用readline,如http://www.perlmonks.org/?node_id=776168所述,它仍会分配给$_并检查它是否已定义。

$ perl -MO=Deparse -e'while (readline($fh)) {}'
while (defined($_ = <$fh>)) {
    ();
}
-e syntax OK

答案 1 :(得分:1)

  • <fh>readline(fh)
  • 的缩写
  • <$fh>readline($fh)
  • 的缩写
  • <...>glob(qq<...>)
  • 的缩写

快捷方式是不可能的,所以请使用长格式。

readline($self->{socket})