我需要在我的网页中连接我的哈希值

时间:2013-03-10 14:16:04

标签: perl

我制作了一个cgi表单,并在此插入一个哈希来查看输出。逻辑是当用户输入他的名字时,他将获得与他的名字相关的DNA序列。我试图从散列的匿名数组中获取值。

我完成了这个程序的两个部分,并坚持使用最后一个程序。 如果输入有效,则将字符串转换为大写,然后使用散列生成相应的DNA序列并输出为:

1.一次取一个用户名字母,并使用步骤1中创建的哈希查找该字母并获得相应的DNA密码。

  1. 构建由这些三联体组成的'DNA'序列,完成后,将其显示给用户。 3.对于大多数字母,将有一个以上的三元组将匹配其姓名的字母。在这种情况下,我必须找出有多少选择,并使用随机数生成器来选择一个。因此,如果用户多次输入他们的名字,他们将获得不同的输出。

    print“Content-type: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
            }
    

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,你想要的是显示%hash? :

print "Content-type: 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 array_name = "", $name;



    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>";

        # hash display
        foreach my $key ( keys %hash ){
            print "$key : <br>";
            foreach my $elem ( @{ $hash{$key} } ) {
                print "$elem " if ref $elem ne 'ARRAY';
                next if ref $elem ne 'ARRAY';
                print "<br/> @{ $hash{$key} } ";
            }
        }
                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
        }

答案 1 :(得分:0)

看起来你所寻找的缺失部分是getRandomDNA,特别是如何从数组中获取随机项。

您可以使用rand $x获取从0到$x的随机浮点数,因此要在数组@array中获取随机项,请执行:

$item = $array[int rand @array];

由于您已经传递了包含所有DNA序列的功能而没有其他功能,因此将它们组合在一起应该很简单。