如何在perl中用hash将如下序列名称和序列内容一一赋值
我有一些序列,类似下面这样,序列名称是已>开头,然后换行后跟的是序列(由ATCG组成,很长很长),如何用hash的key和value一一赋值,好让我调用来计算>bac_1...
我有一些序列,类似下面这样,序列名称是已>开头,然后换行后跟的是序列(由ATCG组成,很长很长),如何用hash的key和value一一赋值,好让我调用来计算>bac_165AAAAAACAACCTCTCTACCTGTTC>bac_173AAAAAACAGACTGCAGTTGACGAT >act_333AAAAAACAATTAACTGTGGACGGA 如何编写一个perl程序,用&key来存序列的名称,然后用&value来存序列本身,然后放在hash里面。如何装在hash里面,让key和value对应。麻烦了~~~我自己写的
展开
1个回答
展开全部
嗯, 你总算学会问问题了! 试试这麼写吧...
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 (写)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询