我在hashref中有一个套接字句柄:$self->{socket}
我想使用$line = <$self->{socket}>
从中读取,但是我收到了语法错误。
现在,我知道
print {$self->{socket}} "Hello";
将负责打印,但
$line = < {$self->{socket}} >;
不起作用。
如何在不破坏我的代码的情况下执行此操作:
$fh = $self->{socket};
$line = < $fh >;
感谢。
答案 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})