【发布时间】:2014-07-06 15:01:45
【问题描述】:
下午好。我正在将一些键和值写入 %hash,但我不断得到一个我似乎无法解释的 undef 值。
my @maxent_unchanged = <FILE1>;
close FILE1;
chomp (@maxent_unchanged);
my @NM;
my @max_score_unchanged;
foreach my $line(@maxent_unchanged) {
if ($line =~ m/[a-z]/i) {
push (@NM, $line);
}
else {
push (@max_score_unchanged, $line);
}
}
my %max_unchanged;
my $i = 0;
foreach my $lines(@maxent_unchanged) {
$max_unchanged{$NM[$i]} = $max_score_unchanged[$i]; ##maxent score for unchanged seq
$i++;
}
具体来说,@maxent_unchanged 在@NM 和@max_score_unchanged 之间交替,如下所示:
$VAR1 = 'TTAAGGCAGCCCACCCGCAGGCT > 1 110740688 110740688 C T GCCTGGGCGGGGAGGGCTGTCACAGTGCCGGCAGCAGCCCTTAAGGCAGC[C]CACCCGCAGGCTGCCGAGCGCTACCTGTATTTCCCCAACTGGGCCATGGC splicing splicing SLC6A17:NM_001010898:exon12:c.1816-10C>T';
$VAR2 = '0.77';
$VAR3 = 'TTCTATCCTTTGTTTTACAGGAA > 1 111857154 111857154 T C TTAAATGGAGGGAGTCCTGACTTTTGAAGTTTATCTGTTTCTATCCTTTG[T]TTTACAGGAACAGCCAGCTGAAAACTCTCCTGGCCATTGGAGGCTGGAAC splicing splicing CHIA:NM_201653:exon5:c.258-8T>C';
$VAR4 = '10.99';
因此它(@maxent_unchanged)的行数是@NM 和@max_score_unchanged 的两倍。我已经检查过了,它是正确的。
如果我转储 @NM 和 @max_score_unchanged 数据,我会得到相同数量的变量,但是当我将它们放入 %hash 时,我会得到一个额外的键值对,如数据转储哈希所示。
$VAR1 = '';
$VAR2 = undef;
$VAR3 = 'TTTTATTAATTCCTTTGTAGAAC > 6 144835040 144835040 T C TATCATCTTAAATATTTCATATGGTTATGTAAGCATTTTATTAATTCCTT[T]GTAGAACCATCAGAACCAGCTAGAAATATTTGATGGGAACGTGGCTCACA splicing splicing UTRN:NM_007124:exon35:c.4945-5T>C';
$VAR4 = '8.22';
$VAR5 = 'TCTTTTTTGGACATGTACAGAGC > 10 97127462 97127462 C A AGGAGTCTCTGAAGAAATTTCCGGAGTAGGGCTGATGGCTGAGCTCTGTA[C]ATGTCCAAAAAAGAAAAAAAAGAAGAAAAAAATAATGTAGATGATTTATT splicing splicing SORBS1:NM_001034957:exon13:c.1024-6G>T,NM_001034955:exon21:c.1972-6G>T,NM_001034956:exon18:c.1459-6G>T,NM_006434:exon13:c.1024-6G>T,NM_015385:exon17:c.1420-6G>T,NM_001034954:exon21:c.1906-6G>T,NM_024991:exon17:c.1147-6G>T';
$VAR6 = '4.43';
我的钥匙是独一无二的,所以我知道这不是问题所在。任何想法为什么?
其次,由于我想删除空的哈希键和值,我该怎么做?
非常感谢您的耐心等待和提前帮助, E
【问题讨论】: