Perl 使用WWW::Mechanize提交多个fasta序列
我想使用下面的perl脚本在fasta格式中实现多个蛋白质序列Perl 使用WWW::Mechanize提交多个fasta序列,perl,Perl,我想使用下面的perl脚本在fasta格式中实现多个蛋白质序列 use WWW::Mechanize; # get the webpage with the form my $mech = WWW::Mechanize->new(); $mech->show_progress(1); my $url = "http://harrier.nagahama-i-bio.ac.jp/sosui/sosu/sosuigsubmit.html"; $mech->get($url);
use WWW::Mechanize;
# get the webpage with the form
my $mech = WWW::Mechanize->new();
$mech->show_progress(1);
my $url = "http://harrier.nagahama-i-bio.ac.jp/sosui/sosu/sosuigsubmit.html";
$mech->get($url);
# just checks to see if scripts call properly
sub validateInput{
my $file = shift;
my $inFh = IO::File->new( $file ) || die "can't open input file\n";
close($inFh);
return 1;
}
validateInput($ARGV[0]);
# fill the fields with the appropriate data and submit
my $fields = {
'in' => $ARGV[0],
'value' => 'Exec'
};
$mech->submit_form(
fields => $fields,
);
# print results
print $mech->content();
但是每次我得到这样的结果
<HTML>
<bR><bR><bR>
<TABLE>
<TR><TD ALIGN=left WIDTH=300>TOTAL PROTEINS</TD><TH>0</TH></TR>
<TR><TD ALIGN=left WIDTH=300>TOTAL MEMBRANE PROTEINS</TD><TH>0</TH></TR>
<TR><TD ALIGN=left WIDTH=300>PERCENTAGE</TD><TH> 0.0 %</TH></TR>
</TABLE>
</HTML>
perl my_script input.seq >output
我这样称呼我的剧本
<HTML>
<bR><bR><bR>
<TABLE>
<TR><TD ALIGN=left WIDTH=300>TOTAL PROTEINS</TD><TH>0</TH></TR>
<TR><TD ALIGN=left WIDTH=300>TOTAL MEMBRANE PROTEINS</TD><TH>0</TH></TR>
<TR><TD ALIGN=left WIDTH=300>PERCENTAGE</TD><TH> 0.0 %</TH></TR>
</TABLE>
</HTML>
perl my_script input.seq >output
感谢您的帮助。对于初学者,这一行:
'in' => $ARGV[0],
这意味着您向他们发送的是文件名,而不是文件内容。您需要先获取内容,然后发送这些内容。像这样的库非常方便。原始代码中的
sosuiG/sosuigsubmit
中是否有空格?如果这是您的真实代码,则URL是错误的。URL中不允许使用空格。您应该检查$mech->success
以确保对get
和submit\u form
的调用成功,$mech->status
以找出失败时的错误,以及$mech->text
以查看表单的实际外观。此外,打开文件检查表单是否有效也是非常浪费的。您可以使用-e
确保它存在,-f
确保它是一个文件而不是一个目录,-s
确保它不是空的,-r
确保它可以被读取,所有这些都不需要经过漫长的打开过程。@borodin,谢谢您的评论。我是初学者。实际上url中没有空格。请始终使用use strict启动Perl文件;使用警告代码>。请注意(仍然未修复)。似乎好多了。谢谢你指引我走向正确的方向。我终于解决了@巴利:没问题,如果我的答案是你问题的关键,请随意接受。@melpomene谢谢,我更新了我的答案以反映这一点。