在moose中定义文件句柄属性

时间:2014-08-12 09:40:44

标签: perl moose filehandle

我正在尝试使用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

1 个答案:

答案 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