私はフォーラムを見回して答えを求めていましたが、それを理解できませんでした。いくつかの計算を行う時間が必要なWebページ用のフォームを送信した後、Mechanizeはすべての計算が完了するのを待っています(時間がかかっていても)。まるでそれが起こらないかのようです。私は、Mechanizeオブジェクトを作成し、フォームを送信し、計算が完了した後に出力ファイルをダウンロードするサブルーチンを反復しています。しかし、何度か計算に時間がかかるため、これらのタスクをすべて完了することなくループの次の繰り返しにジャンプするような気がします。誰にも何か提案はありますか?ありがとう。これは、(この場合は、その親クラスLWP::UserAgent
に渡される)そのコンストラクタで(秒単位で指定)オプションのtimeout
パラメータを取ることができサブルーチン提出に関する機械化の問題
sub microinspector {
my ($sequence, $folder) = @_;
print STDOUT "subroutine sequence: $sequence\n";
my $browser = WWW::Mechanize->new();
$browser->get("http://bioinfo.uni-plovdiv.bg/microinspector/");
$browser->form_number(1);
$browser->field("target_sequence", $sequence);
$browser->select("Choose an organism : ", "Mus musculus");
$browser->submit();
#print $browser->content();
my @links = $browser->links();
chdir($folder) or die "Cannot chdir to $folder";
foreach my $link (@links) {
#print $link->url();
if($link->url() =~ /csv$/i){
my $result = $browser->get($link->url());
my $filename = ($link->url() =~ /\/([^\/]+)$/)[0];
print "Saving $filename\n";
open(OUT, ">$filename");
print OUT $result->content();
close(OUT);
}
}
}