sách gpt4 ai đã đi

Thông báo lỗi: không thể gọi phương thức 'do' trên giá trị không xác định

In lại 作者:行者123 更新时间:2023-12-03 18:29:29 26 4
mua khóa gpt4 Nike

# #################################################
# Subroutine to add data to the table BlastSearch
# Could be redone to be more general, but it seems more
# efficient to add data as it is pulled from the xml.
# #################################################
sub addData {
my (@data, $dbhandle) = @_;
print join(", ", @data) . "\n";
my $sqlcmd = "insert into BlastSearch values('" . join("','",@data) . "')";
$dbhandle->do($sqlcmd) or die $DBI::errstr;
}


这给出了错误消息“无法在未定义的值上调用方法“ do”。此特定方法中是否有任何导致问题的原因?如果需要,我可以添加更多脚本。我唯一的猜测是它与“ @data”有关,该代码填充在以下代码中:

# #################################################
# Subroutine to find the:
# Accession id
# e-value (Hsp_evalue)
# number of identites (Hsp_identity)
# of the top five matches.
# #################################################
sub parseBlastXML {
my ($file, $dbhandle) = @_;
my $xml = new XML::Simple();
my $data = $xml->XMLin($file, forcearray=>[qw(Hit)], keyattr=>[]);
my $entry_node = $data->{BlastOutput_iterations};
my $iterhit = $entry_node->{Iteration}->{Iteration_hits}->{Hit};

#quick find of uniprotID
my $uniProtID = substr($file, 0, 6);

my $count = 0;
foreach my $val (@$iterhit) {
my @dataarray;
if ($val->{Hit_hsps} && $count < 5) {
print "\n";
print "Hit accession: " . $val->{Hit_accession} . "\n";
print "e-value: " . $val->{Hit_hsps}->{Hsp}->{Hsp_evalue} . "\n";
print "number of ID's: " . $val->{Hit_hsps}->{Hsp}->{Hsp_identity} . "\n";
push(@dataarray, $val->{Hit_accession});
push(@dataarray, $val->{Hit_hsps}->{Hsp}->{Hsp_evalue});
push(@dataarray, $val->{Hit_hsps}->{Hsp}->{Hsp_identity});
push(@dataarray, $uniProtID);

addData(@dataarray, $dbhandle);

$count ++;
}
}
return $data;
}

1 Câu trả lời

以下是一个错误,因为@data始终会提取@_中的所有值,而使$dbhandle不确定。

sub addData {
my (@data, $dbhandle) = @_; # $dbhandle will always be undefined


要解决此问题,您需要对参数进行重新排序,并始终使数组位于赋值的最后。

sub addData {
my ( $dbhandle, @data ) = @_;

...;
}

sub parseBlastXML {
...;
addData( $dbhandle, @dataarray );


注意:也有可能将dbh移出参数列表末尾。但是,这样的编码风格不是一个好主意。

关于perl - 错误消息:无法对未定义的值调用方法“做”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569754/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com