私は cgi フォームを作成し、これにハッシュを挿入して出力を確認しました。ロジックは、ユーザーが自分の名前を入力すると、その名前に関連する DNA の配列を取得するというものです。ハッシュの匿名配列から値を取得しようとしています。
私はこのプログラムの 2 つの部分を実行し、最後の部分に固執しました。入力が有効な場合は、文字列を大文字に変換し、ハッシュを使用して適切な DNA シーケンスを生成し、次のように出力します。
1.一度にユーザーの名前の 1 文字を取得し、手順 1 で作成したハッシュを使用してその文字を検索し、対応する DNA コドンを取得します。
これらのトリプレットで構成される「DNA」シーケンスを構築し、終了したら、それをユーザーに表示します。3.ほとんどの文字には、名前の文字と一致するトリプレットが複数あります。この場合、選択肢がいくつあるかを調べ、乱数ジェネレーターを使用して 1 つを選択する必要があります。したがって、ユーザーが自分の名前を複数回入力すると、異なる出力が得られます。
print "コンテンツタイプ: text/html\n\n";
if (!param){ #if no data, display blank form print headingstuff(""); print programInfo(); print form(); print endingstuff(); }else{ print headingstuff(""); print programInfo(); #validate user name my $name = param("name"); my $nameLength = length($name); if($nameLength == 0){ print form(param("name")); print "<br>Please enter a vaild name!! <br>"; }else{ my %hash = ( "A"=>["Alanine","Ala",["GCT"," GCC"," GCA"," GCG"]], "R"=>["Arginine","Arg",["CGT"," CGC"," CGA"," CGG"," AGA"," AGG"]], "N"=>["Asparagine","Asn",["AAT"," AAC"]], "D"=>["Aspartic acid","Asp",["GAT"," GAC"]], "C"=>["Cysteine","Cys",["TGT"," TGC"]], "E"=>["Glutamic acid","Glu",["GAA"," GAG"]], "Q"=>["Glutamine","Gln",["CAA"," CAG"]], "G"=>["Glycine","Gly",["GGT"," GGC"," GGA"," GGG"]], "H"=>["Histidine","His",["CAT"," CAC"]], "I"=>["Isoleucine","Ile",["ATT"," ATC"," ATA"]], "L"=>["Leucine","Leu",["TTA"," TTG"," CTT"," CTC"," CTA"," CTG"]], "K"=>["Lysine","Lys",["AAA"," AAG"]], ); print "<br>Codons for user name: <br>"; my @nameAsArray = split('', $name); foreach my $letter(@nameAsArray){ my $uLetter = uc($letter); my @val = @{$hash{$uLetter}}; my $letterDna = getRandomDNA(\@{$val[2]}); print "<br>"; } sub linkToOriginalPage{ return <<L; <br><br> <a href="xyz.cgi">Click here to return to original page.</a> <br><br> L } sub headingstuff { my $mytitle = $_[0]; return <<H; <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html> <head> <title>$mytitle</title> </head> <body> <h1> :) </h1> H } ###################################################### sub endingstuff{ return <<E; </body> </html> E } #################################################### sub form{ return <<F; <form method="post" action="xyz" enctype="multipart/form-data"> <table> <tr> <td>Enter your name:</td> <td> <input type="text" name="name" value="$_[0]"/></td> </tr> <tr> <td colspan="2"><input type="submit"/></td> </tr> </table> </form> F }