如何在perl中用hash将如下序列名称和序列内容一一赋值

我有一些序列,类似下面这样,序列名称是已>开头,然后换行后跟的是序列(由ATCG组成,很长很长),如何用hash的key和value一一赋值,好让我调用来计算>bac_165AAAAAACAACCTCTCTACCTGTTC>bac_173AAAAAACAGACTGCAGTTGACGAT >act_333AAAAAACAATTAACTGTGGACGGA 如何编写一个perl程序,用&key来存序列的名称,然后用&value来存序列本身,然后放在hash里面。如何装在hash里面,让key和value对应。麻烦了~~~我自己写的

嗯, 你总算学会问问题了! 试试这麼写吧...

use strict;
my %h;
my $filename = "seq.txt";

open my $seqFile, $filename or die "$! Can't open $filename";
my @temp = <$seqFile>;
close $seqFile;

chomp @temp;
s/^>// foreach @temp;
%h = @temp;

# 现在你可以
print $h{act_333}; # 打印出: AAAAAACAATTAACTGTGGACGGA 
print $h{bac_165}; # 打印出: AAAAAACAACCTCTCTACCTGTTC

# 又或者
foreach my $key ( keys %h ) {
 print "$key => $h{$key}$/"
} # 打印出所有 "键-值" 对

 补充一下..

    &xxx 在 perl 里是呼叫涵数 (sub) 的语法, 而不是 hash

    存取 hash 的语法是 $h{someKey} (读), 或者 $h{someKey} = 1 (写)

追问

谢谢你,能帮我再看看吗

/(ㄒoㄒ)/~~我的seq.txt里序列名称是这样的

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答