我制作了一个 cgi 表单,并在其中插入了一个哈希以查看输出。逻辑是当用户输入他的名字时,他将获得与他的名字相关的 DNA 序列。我正在尝试从哈希的匿名数组中获取值。
我已经完成了这个程序的两个部分,并坚持最后一个。如果输入有效,则将字符串转为大写,然后使用哈希生成适当的 DNA 序列并输出为:
1.一次取一个用户姓名的字母,并使用步骤1中创建的哈希查找该字母并获得相应的DNA密码子。
构建由这些三元组组成的“DNA”序列,完成后,将其显示给用户。3.对于大多数字母,会有不止一个三元组匹配他们名字的一个字母。在这种情况下,我必须找出有多少选择并使用随机数生成器来选择一个。因此,如果用户多次输入他们的名字,他们将得到不同的输出。
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 }