Я новичок в MOOSE и Perl OOP, и я изо всех сил пытаюсь понять порядок выполнения кода.
Я хочу создать файлы для чтения классов, поэтому атрибутом объекта должен быть дескриптор файла, а другим - имя файла для чтения.
Моя проблема заключается в том, что атрибут 'дескриптор файла' имеетКонструктор, которому требуется $ self-> filename, но иногда во время выполнения имя файла (пока) недоступно при вызове компоновщика.
Спасибо за помощь
Создание моего идеального объекта:
my $file = FASTQ::Reader->new(
filename => "$Bin/test.fastq",
);
Модуль Perl:
has filename => (
is => 'ro', isa => 'Str', required => 1,
);
has fh => (
is => 'ro', isa => 'FileHandle', builder => '_build_file_handler',
);
sub _build_file_handler {
my ($self) = @_;
say Dumper $self;
open(my $fh, "<", $self->filename) or die ("cant open " . $self->filename . "\n");
return $fh;
}
См .: https://gist.github.com/telatin/a81a4097913af55c5b86f9e01a2d89ae