我正在尝试使用moose在我的Perl代码中定义文件句柄属性,如下所示:
has validation_log_file_handler => (
is => 'ro', isa => 'File', builder => '_build_validation_log_file_handler'
);
建设者:
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
答案 0 :(得分:3)
打印到复杂的文件句柄需要curlies:
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
。