【问题标题】:How to read a line from a filehandle in a hashref如何从 hashref 中的文件句柄中读取一行
【发布时间】:2018-02-05 22:50:02
【问题描述】:

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

现在我知道了

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

会负责打印,但是

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

没用。

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

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

谢谢。

【问题讨论】:

    标签: perl href filehandle


    【解决方案1】:

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

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

    【讨论】:

    • 我真希望我能给你们两个开绿支票。你们都教会了我一些关于 PERL 的有意义的东西。
    • @Vic K,语言名称是 Perl,而不是 PERL。
    【解决方案2】:
    • &lt;fh&gt;readline(fh) 的缩写
    • &lt;$fh&gt;readline($fh) 的缩写
    • &lt;...&gt;glob(qq&lt;...&gt;) 的缩写

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

    readline($self->{socket})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2010-09-16
      相关资源
      最近更新 更多