當嘗試檢查一個對象是否已被創建(由perl模塊Bio :: Perl)時,我得到一個錯誤,例如「對一個未定義的值調用方法'xxxx'」。如何檢查對象的屬性是否有值?
是否有一種檢查屬性是否有值的通用方法?我會喜歡做這樣的事情:
if ($the_object->the_attribute) {
但只要該屬性是「undef」,調用該方法只會給我錯誤消息。我一直無法找到這個問題的解決方案 - 這是真實的,因爲該對象是由Bio :: Perl模塊創建的,並且可能會或可能不會設置一些屬性。也許我應該補充一點,我並不特別精通perl-objects。
編輯: 下面是我的代碼的相關部分。 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