2017-04-04 33 views
1

perlプログラムを使用して、一度にモチーフを見つけるためのシーケンスを1つだけとるバイオインフォマティクスサーバを作成し、シーケンス($ seq)を10000bp以上の6000を超えるシーケンスを含むテキストファイル(example.txt)。問題は、私のシーケンスが1408bpを超えると、そのような長さのためにURLを取得できないというエラーが発生します。バイオインフォマティクスサーバで長すぎるためperl getメソッドのURLを取得

#!usr/bin/perl 
use LWP::Simple; 
my $file = 'example.txt'; 
open my $fh, '<', $file or die; 
$/ = undef; 
$all=<$fh>; 
@other=split(">",$all); 

for($i=1;$i<=$#other;$i++) 
{ 
    my ($first,@other)=split("\n",$other[$i]); 
$seq=join("\n",@other); 
$len=length($seq); 

my $link = "http://regrna2.mbc.nctu.edu.tw/detection_output.php?S1=%3E%0D%0A$seq&tfbs=ON&tfbs_species=rice%2C+Oryza+sativa&RadioGroup1=matrix&matchscore=1&rho=ON&SplicingSite=ON&GeneSplicer_species=Rice&SplicingMotif_species=Homo+sapiens&Polya=ON&RBSfinder=ON&UTRsite=ON&AUrich=ON&RNAediting=ON&RiboSW=ON&ERPIN=ON&Rfam=ON&LongStem=ON&LongStem_len=40&fRNAdb=ON&fRNAdb_similarity=0.9&fRNAdb_match_len=30&miRNA=ON&miRNA_species=Oryza+sativa&score=170&miRNA_FE=-25&ncRNA=ON&ncRNA_species=Oryza_sativa&ncRNA_length=20&ncRNA_FE=-20&S2=&GCratio=ON&GCratio_window_size=100&accessibility=ON&accessibility_window_size=100&unpair_size=6&StartCodon=1&draw_dotline=ON&position_line_interval_len=100&Size=950&B1=Submit"; 

$link =~m/.\/Results\/(\d+)\.all\.result/; 


my $second = get("http://regrna2.mbc.nctu.edu.tw/Results/$1.all.result") or die "cannot retrieve code\n"; 


my $filename = "$first.txt"; 
open(my $fhh, '>', $filename) or die "Could not open file '$filename' $!"; 
print $fhh "$second"; 
close $fhh; 

} 

答えて

1

URLの長さは、クライアントとサーバーの両方によって決定されます。参照:

What is the maximum length of a URL in different browsers?

制限がサーバー側されるようにあなたがget()を経由して、このような文字の長いシーケンスとして提出することができないかもしれないように思われます。あなたはおそらくここで説明されてPOSTを、使用する必要があります。具体的に

http://lwp.interglacial.com/ch05_07.htm

しかし、ファイル・アップロードの部分は、いくつかは、やって含まれます。最初に、あなたは の 'Content_Type' => 'form-data'というヘッダー行を追加する必要があります。 これは実際には "multipart/form-data" POSTingであることを意味します。そして 第2に、 'saywhat' =>テキストの文字列がある場合、 には配列参照があり、最初の配列項目はアップロードするファイルへのパス です。だからこれは次のようになります:

my $response = $browser->post(
    'http://pastel.int/feedback.pl', 
    [ 'subject' => 'Demand for pie.', 
    'saywhat' => ["./today/earth_pies1.dml"], 
    'user' => 'Adm. Kang', 
    ], 
    'Content_Type' => 'form-data', 
    ...any other header lines... 
); 
関連する問題