+ -
当前位置:首页 → 问答吧 → 有关数组和哈希结构的问题

有关数组和哈希结构的问题

时间:2011-04-27

来源:互联网

我是个perl初学者,下面是我自己编的一个程序:


#!/usr/bin/perl -w

open(PEPTIDE,"C:/Documents and Settings/rcpa/桌面/phosphopeptide.txt");
open(GENESYMBOL,"C:/Documents and Settings/rcpa/桌面/Genesymbol.txt");

@peptide=<PEPTIDE>;
@genesymbol=<GENESYMBOL>;    #两个txt文件中含有相同数量的字符串元素。

%gene=();

for($i=0;$i<@genesymbol;$i++){
        $gene{$peptide[$i]}=$genesymbol[$i];
}                                                                           #我用for循环把两个数组对应元素定义为%gene的键和值

print $gene{'AADLEDTpTpEEETAK'};        #我想查找关键字AADLEDTpTpEEETAK对应的值,但是系统提示如下:Use of uninitialized value in print at trya.pl line 15                           

close (PEPTIDE);
close (GENESYMBOL);

文件中确实含有AADLEDTpTpEEETAK这个键,我想知道程序哪里出了问题,或者是有语法方面的东西我还没弄懂?请高手解答

作者: 即将到来   发布时间: 2011-04-27

在for前加两行吧:
chomp @peptide;
chomp @genesymbol;

每一行的行末都有换行符,你应该先去掉。

作者: iamlimeng   发布时间: 2011-04-27

果然是这样,不过我不明白换行符是怎么影响结果的,能解释下么?

如果我用  print $gene{$peptide[$12]}; 替换原来的print语句就能输出与之对应的值,想不明白...

作者: 即将到来   发布时间: 2011-04-27

@peptide 中的元素是带结尾的 "\n" 的,chomp 过之后没有了。相应的 hash 的 key 不一样怎么索引

作者: zhlong8   发布时间: 2011-04-27