我正在尝试使用 moose 在 Perl 代码中定义文件句柄属性,如下所示:
has validation_log_file_handler => (
is => 'ro', isa => 'File', builder => '_build_validation_log_file_handler'
);
builder :
sub _build_validation_log_file_handler {
my ($self) = @_;
open(my $fh, ">", $self->validation_log_file)
or die ("ERROR:Can't open file "
. $self->validation_log_file
. " for writing");
return $fh;
}
但是当尝试写入文件时:
sub run {
my ($self) = @_;
print $self->validation_log_file_handler "Hello\n";
.
.
.
}
我是穆斯的新人。难道我做错了什么?我收到以下编译错误:
syntax error. String found where operator expected
最佳答案
打印到复杂的文件句柄需要花括号:
print { $self->validation_log_file_handler } "Hello\n";
或者你可以使用 OO 表示法
use IO::Handle; # Required in older versions of Perl
$self->validation_log_file_handler->print("Hello\n");
您是否定义了 File
类?如果没有,请使用IO::Handle
作为isa
。
关于perl - 在 moose 中定义文件句柄属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261040/