perl 모듈 Bio :: Perl에 의해 객체가 만들어 졌는지 확인하려고 할 때 "정의되지 않은 값에 'xxxx'메서드를 호출 할 수 없습니다."와 같은 오류가 발생합니다.개체의 특성에 값이 있는지 확인하는 방법은 무엇입니까?
속성에 값이 있는지 여부를 확인하는 일반적인 방법이 있습니까?
if ($the_object->the_attribute) {
그러나만큼 속성이 "미확정"있는 그대로, 메서드를 호출하는 것은 단지 나에게 오류 메시지를 줄 것이다 : 내가 좋아하는 뭔가를 좋아하는 것이다. 필자는이 문제에 대한 해결책을 찾을 수 없었습니다. 왜냐하면 객체가 Bio :: Perl 모듈에 의해 생성되고 일부 속성이 설정 될 수도 있고 설정되지 않을 수도 있기 때문입니다. 어쩌면 나는 perl-objects-savvy가 아니라고 덧붙여 야 할 것이다.
편집 : 다음은 내 코드의 관련 부분입니다. get_sequence() 함수는 Bio :: Perl 모듈에 있습니다. 13 행에서 길이를 확인하기 전에 값 (이 경우 시퀀스)이 있는지 확인하려면 어떻게해야합니까?
my @msgs;
my @sequence_objects;
my $maxlength = 0;
for (@contigs) {
my $seq_obj;
try {
$seq_obj = get_sequence('genbank', $_);
}
catch Bio::Root::Exception with {
push @msgs, "Nothing found for $_ ";
};
if ($seq_obj) {
my $seq_length = length($seq_obj->seq);
if ($seq_length > $maxlength) {
$maxlength = $seq_length;
}
push @sequence_objects, $seq_obj;
}
}
...
아니요. obj가 만들어 졌는지 확인하고 있지 않습니다. 당신은'$ the_object-> the_attribute'의 반환 값을 검사하고 있으며,'$ the_object'는 객체가 아니라'undef'라는 에러 메시지를 의미합니다. '$ the_object '가 어디서 왔는지, 그리고 어떤 속성이 있어야하는지 등) 좀 더 많은 코드를 포함한다면, 나는 나의 대답을 다듬을 수있다. – simbabque