Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 使用WWW::Mechanize提交多个fasta序列_Perl - Fatal编程技术网

Perl 使用WWW::Mechanize提交多个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);

我想使用下面的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);

# 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谢谢,我更新了我的答案以反映这一点。