gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:29:21 24 4
gpt4 key购买 nike

请先看下面的代码。

#! /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;

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

但是,perl 编译器只是提示“打印”行中有语法错误。你们中的任何人都可以告诉我这里有什么问题吗?提前致谢。

最佳答案

您需要输入 $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 - 如何在 Perl 类中存储和访问文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com