【问题标题】:defining a file handle attribute in moose在 moose 中定义文件句柄属性
【发布时间】:2014-08-12 09:40:44
【问题描述】:

我正在尝试使用 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";
    .
    .
    .
}

我是 Moose 的新人。难道我做错了什么?我收到以下编译错误:

syntax error. String found where operator expected

【问题讨论】:

    标签: perl moose filehandle


    【解决方案1】:

    打印到复杂的文件句柄需要花括号:

    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

    【讨论】:

    • 句柄不是FileHandle对象;它们是 IO::Handle 或 IO::File 对象。不过,不确定将其用作isa 的效果如何。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2016-06-17
    • 2019-02-22
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多