perl中 hash值是数组如何访问?谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl中 hash值是数组如何访问?谢谢相关的知识,希望对你有一定的参考价值。

先建立了一个hash,值是两个变量组成的数组。while (<NAME>) chomp; my @its = split/,/,$_; next if($its[3] eq "Blank"); my @fred = ($its[4],$its[5]); $neme_hash$its[6] = [ @fred ];然后想根据键调用数组的会后除了点问题:while (<gene_SNP>) chomp; my @it_s = split/,/,$_; my $str = $it_s[1]; my @prime_r = @neme_hasg$str; print "@prime_r";打印的一直是内存地址,求大神们赐教,谢谢了
图片1:为建立的hash,rs759330 为键 后面的两段字符为值。

图片2:为输入选取的键,输出的是(应该是内存地址,我瞎猜的)

参考技术A 试验的:

C:\Users\Administrator>perl -e "@a=(1,2); $b=[@a]; @c=@$b ; print \"@a : $b : @c \" "
1 2 : ARRAY(0xa031c20) : 1 2

建议将
my @prime_r = @neme_hasg$str;

修改为

my @prime_r = @$neme_hasg$str;
试试本回答被提问者采纳

小白学Perl之初始哈希


前言

哈希:哈希是一种数据结构,类似于数组,包含关键字keys和值value,键必须是字符串,值是标量值,哈希的特点是键是唯一的,键与键之间是无序的。

哈希、数组区别:数组是固定大小,顺序结构。但是比较全面,查找方便。但是排序、增、删没有hash表结构方便。所以一般数组存放数字,链表作为常用的集合。哈希表的检索速度很快,不同于数组,哈希访问元素的是按照名字访问标量的key=>value


操作:

1.my %hash; //声明哈希

$hash{'A'}="1"

A是key,1 是value,与数组一样,hash作为整体时,%hash 带%,而作为单个元素使用要使用$。

my%food=('fruit',"apple",'drink',"Coco")

类似数组初始化 注意这里使用的是( )不是{} {},用了它实际就是创建了一个引用。  

my%fruit=(apple=>"fruit",banana=>'fruit');  

“=>”是perl运算符,用于hash。


应用举例:

我们通过一个实例来展示hash的实际应用,本例使用哈希实现两个文本文件的合并,输入文件为A、B,输出文件为OUT.txt,并对哈希排序后输出。

open(FD1,"A")||die("Can not open thefile!$!n");

open(FD2,"B")||die("Can not open thefile!$!n");

%hs = ();

%hss = ();

while(<FD1>){

@arr1 = split /\t/;

foreach $p (@arr1){chomp($p);$p=~s/\t//;$hs{$arr1[3]}= $hs{$arr1[3]}.$p."\t";}

foreach $p (@arr1){chomp($p);$p=~s/\t//;$hss{$arr1[3]}= $hss{$arr1[3]}.$p."\t";}

}

close FD1;

open(OUT,">OUT.txt")||die("Can notopen the file!$!n");

while(<FD2>){

@row_of_FD2 = split /\ /;

if(exists $hs{$row_of_FD2[0]}){

chomp($row_of_FD2[1]);

$hs{$row_of_FD2[0]} =$hs{$row_of_FD2[0]}.$row_of_FD2[1];

}

}

foreach $key (sort {$a cmp $b} keys %hs){

if($hss{$key} eq $hs{$key}){

$hs{$key} = $hs{$key}."NA";

print OUT $hs{$key},"\n";

}

else{

print OUT $hs{$key},"\n";


通讯邮箱:ad.cepi@edbc.org

投稿邮箱:scw.cepi@edbc.org

往期「精彩内容」,点击回顾

| |

|

  | |

精彩会议及课程,点击回顾




CEPI感谢您的支持!

(IOS系统用户专用通道)


以上是关于perl中 hash值是数组如何访问?谢谢的主要内容,如果未能解决你的问题,请参考以下文章

perl中如何把数组最为hash的key

如何将数组作为值存储在 Perl 哈希中?

小白学Perl之初始哈希

如何在 Perl 中找到哈希中的键数?

hash 在 perl 中的用法(转载)

perl 中的引用