Я использую модуль BioPerl для получения строки из набора параметров. Я последовал за HOWTO:Beginners page. Модуль, очевидно, возвращает хэш-объект. Как получить фактическую строку из хэш-объекта?Как получить доступ к данным, хранящимся в этом объекте?
use Bio::DB::GenBank;
use Data::Dumper;
my $gb = Bio::DB::GenBank->new(-format => 'Fasta',
-seq_start => 1,
-seq_stop => 251,
-strand => 1
-complexity => 1);
my $seq = $gb->get_Seq_by_acc('NG_016346');
my $sequence_string = lc($seq->seq());
my $seq_obj = Bio::Seq->new(-seq => $sequence_string,
-alphabet => 'dna');
my $prot_obj = $seq_obj->translate;
print Dumper($prot_obj);
Отпечатки Хранитель данных следующие:
$VAR1 = bless({
'primary_seq' => bless({
'length' => 83,
'_root_verbose' => 0,
'_nowarnonempty' => undef,
'seq' => 'RLCVKEGPWPAVEGTWSWG*HRPGSRACPRWGAPNSVQATSYTPSPTHAPFSVSPIPIC*MSLLEASCWPGSREDGARMSAGM',
'alphabet' => 'protein'
}, 'Bio::PrimarySeq'),
'_root_verbose' => 0
}, 'Bio::Seq');
Как получить 'Последовательность', который хранится в $prot_obj
?
Я попытался
print $prot_obj{'primary_seq'}{'seq'};
но ничего не печатает. Хранитель данных напечатал слово bless
. Возможно, seq
- это поле объектно-ориентированной переменной.
Требуется только первый '->'. Использование '->' после каждого {} (hashref), [] (arrayref) является старым синтаксисом. –
Это не обязательно старый синтаксис, это просто, что perl знает, что что-либо вложенное в ref должно быть другим ref, и потому что никогда не может быть двусмысленности, последние операции разыменования не требуются – stevieb
Боюсь, я не убежден это правильная вещь. Точка OO заключается в инкапсуляции, и поэтому выталкивание непосредственно в атрибутах вложенных объектов является плохим. – Sobrique