perl里将一个数组元素唯一化(perl中如何把数组最为hash的key)

:暂无数据 2026-08-06 19:10:02 1

perl里将一个数组元素唯一化(perl中如何把数组最为hash的key)

大家好,今天小编来为大家解答以下的问题,关于perl里将一个数组元素唯一化,perl中如何把数组最为hash的key这个很多人还不知道,现在让我们一起来看看吧!

本文目录

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

use strict;
use warnings;

my %hash=(a=》{1=》10,2=》20},b=》{3=》30,4=》40});
foreach my $key1 (keys(%hash))
{
print("\$hash{$key1} has keys:".join(’,’,keys(%{$hash{$key1}})),"\n");
}

Perl 里关于哈希和reference的问题,请教高手

其实想但简单的,教你一个黄金法则:需要什么样的类型,你就把他写成什么样的“形式”, 并且按照适应的方法去处理他就一定不会错了!
举个例子,边解释边完成你的问题:
最好边写程序,边画一个结构示意图:key=》 数组Values, 数组Values的元素是对各个数组的引用,也就是 数组Values-》 数组元素;
1. 简单图示:
Key =》 ;
说明: =》表示哈希,左边key,右边是对应的值; -》表示引用,右边是实际的结构; 结构用 括住表示是 数组; 结构用 {} 括住表示是hash;
2. 代码示例:
my %locGeneElem; # 一个起始位点loc 对应多个Gene, 每个Gene 有多个元素,与你需求一致。
my @Elems;
my ($loc, $gene, $elem) = (123456, ’gene1’, ’extron’);
push @Elems, $elem; #存入最后的数组 @Elems
push @{ $locGeneElem{ $loc } }, $gene; # 但是这样不方便存值,最好是 key 指向hash,存起来方便,不然就加上数组下标:
push @{ $ { $locGeneElem{ $loc } } 的值就是$gene的信息,但是丢失了gene1这个信息,需要另存起来!
# 如果 key 指向hash 就方便的多了,如下
push ${ $locGeneElem{ $loc } } { $gene } , @Elems; #存一个引用到
假设现在要遍历输出gene1的信息,那很方便:
for $elem ( @ { ${ $locGeneElem{ $loc } } { $gene } } ){
print $elem, "\n";
}
说明 : 为什么看起来那么复杂??? 有很多 $ 和括号?
这就是好处所在了,从最里面开始看:
1. $locGeneElem{ $loc } 这是一个hash , key 是 $loc, 很好懂, 他的value对应一个hash;
2. ${ $locGeneElem{ $loc } }, 就在1 中的两边加上 ${}就可以了,这样一看就是 hash的结构,也就是 把1的value当成一个hash来看,那么新的key :$gene 放到后面就行了。所以见下3。
3. ${ $locGeneElem{ $loc } }{ $gene }, 这个整体就是 新hash 的key $gene对应的值, 他是一个数组,所以我们要用的时候只需要把它当成数组写就可以了, 要用整个数组就在两边加上 @{} , 要用某一个元素,就用 ${}...的形式,非常直观,不会出错!所以取值的时候我们用的是:
@ { ${ $locGeneElem{ $loc } } { $gene } } ,整体看来是一个数组。希望你能够把握这种方法,然后再复杂的表达式也能够一眼看懂!

请帮忙看下perl的哈希数组是否需要初始化

perl 的 hash 里没有所谓初始化的概念. 也或者说, 当你 "制造" 了一个 key, 其初始值就是 undef.
我们初始化一个值是为了编程时就算忘了赋某个值时, 还有个基本值可供使用.
但 perl 的 hash 里可以装最单纯的 scalar, 也可以是 array, reference, 甚至是 sub.
这跟 java 或很多其他语言不一样, 要事先宣告 data type. 中间任何时候改变都可以.
所以, 也没有初始化的意义了. 初始化并不能给你甚麼特别的保障.
lrepre 说的很对, 如果是 perl 的新手, 最好都用上 -w 和 use strict. 还有日後你需要用到更复杂的 hash 时, 你还会需要用上
no autovivification; # 这个模块是防止你在 if ( ... ) 中意外地制造了个 key 出来

关于perl里将一个数组元素唯一化和perl中如何把数组最为hash的key的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

perl里将一个数组元素唯一化(perl中如何把数组最为hash的key)

本文编辑:admin

更多文章:


send out用法及例句(send out是什么意思)

send out用法及例句(send out是什么意思)

各位老铁们好,相信很多人对send out用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于send out用法及例句以及send out是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 20:30

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

大家好,关于全球新冠肺炎疫情背景下航运发展很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年9月7日 17:10

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

大家好,关于matlab求解带字母参数方程组很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月7日 16:30

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

本篇文章给大家谈谈oracle中的循环语句,以及下面哪个不是oracle程序设计中的循环语句 a for对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 15:30

多表查询怎么做(Excel技巧:如何多表同步筛选)

多表查询怎么做(Excel技巧:如何多表同步筛选)

各位老铁们好,相信很多人对多表查询怎么做都不是特别的了解,因此呢,今天就来为大家分享下关于多表查询怎么做以及Excel技巧:如何多表同步筛选的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 15:10

服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

scrollthrough意思(“scroll”是什么意思)

scrollthrough意思(“scroll”是什么意思)

今天给各位分享“scroll”是什么意思的知识,其中也会对“scroll”是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 08:00

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

本篇文章给大家谈谈怎么激活keygen,以及注册机如何激活cad2008一个简单激活cad2008的方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站

2026年9月7日 06:30

最近更新

热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表