如何在Perl类中存储和访问文件句柄?

前端之家收集整理的这篇文章主要介绍了如何在Perl类中存储和访问文件句柄?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请先查看以下代码.
#! /usr/bin/perl
package foo;

sub new {

    my $pkg = shift;
    my $self = {};
    my $self->{_fd} = undef;
    bless $self,$pkg;

    return $self;
}

sub Setfd {

    my $self = shift;
    my $fd = shift;
    $self_->{_fd} = $fd;
}

sub write {

    my $self = shift;
    print $self->{_fd} "hello word";
}

my $foo = new foo;

我的目的是使用hash在类中存储文件句柄.文件句柄最初是未定义的,但之后可以通过调用Setfd函数来启动.然后
可以调用write来实际将字符串“hello word”写入文件句柄指示的文件,假设文件句柄是成功“写入”打开的结果.

但是,perl编译器只是抱怨“print”行中存在语法错误.谁能告诉我这里有什么问题?提前致谢.

解决方法

您需要将$self-> {_ fd}表达式放在块中或将其分配给更简单的表达式:
print { $self->{_fd} } "hello word";

    my $fd = $self->{_fd};
    print $fd "hello word";

perldoc -f print开始:

Note that if you’re storing FILEHANDLEs in an array,or if you’re using any other expression more complex than a scalar variable to retrieve it,you will have to use a block returning the filehandle value instead:

print { $files[$i] } "stuff\n";
print { $OK ? STDOUT : STDERR } "stuff\n";

猜你在找的Perl相关文章