哈希和数组是Perl中较为常用的结构,本文则重点讨论数组和哈希的一些基本用法,供广大喜爱Perl的同学们交流学习。

哈希

Perl中的哈希表类似于Python中的字典结构,由(键=>值)对构成,以"%"开头:

  • 定义:%hash = ('a'=>1,'b'=>2,'c'=>3);或 %hash = ('a',1,'b',2,'c',3);
  • 访问:$hash{'a'}; #直接用花括号访问
  • 插入元素:$hash{'d'} = 4; #('a'=>1,'b'=>2,'c'=>3,'d'=>4)
  • 删除键值对:delete $hash{'a'}; #('b'=>2,'c'=>3)
  • 清空:undef %hash;或 %hash = ();
  • 判断哈希中是否包含某key:exits($hash{$hey}); #存在返回1,不存在返回0

哈希遍历:

while(my($key,$value)=each%h){

  print"$key\t$value\n";}


嵌套哈希:

  • 定义:%MulHash = (

      'fruit'=>{'apple'=>1,'banana'=>2},

      'vegetable'=>{'potato'=>1},

      'family'=>['wife','husband','son']);

ps:嵌套哈希定义时最外层用小括号,但嵌套内容必须是花括号,若嵌套数组,则需用中括号

  • 插入哈希元素:$MulHash{'weight'}={'jack'=>100,'mary'=>150}; #直接赋值即可
  • 元素访问:$MulHash{'fruit'}{'apple'} = 1;
  • 数组嵌套访问,把序号放在对应的地方即可:$MulHash{'family'}[0]='daughter';

嵌套哈希遍历:层序遍历即可

for $key1(sort keys %MulHash){

  for $key2 (sort $MulHash{$key1}){

    print $MulHash{$key1}{ $key2};

}}


数组

perl数组变量以“@”开头,是一种列表结构。

  • 定义:@array = ('a','b','c','d');
  • 元素访问:跟很多语言一样,Perl数组同样通过下标存取,第一个下标为0。如$array[0];
  • 数组拷贝:@array1 = @array2;
  • 打印数组:print (@array,"\n");或print ("@array\n");
  • 数组长度:$len = @array; #$len为数组@array的长度;
  • 子数组:@subarray1 = @array[0,1]; @subarray2 = @array[0..2]; #@subarray1=('a','b');@subarray2=('a','b','c');
  • 数组排序:@array2=sort(@array);#@array2=("a","b","c")
  • 数组反转:@array2=reverse(@array);或@array2=reversesort(@array);

数组遍历:

foreach $item (@list) {
    print "$item\n";
}

for (my $i = 1; $i < @list; $i++){
  print "$key_word[$i]";

}

Perl中的数组&哈希应用的更多相关文章

  1. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  2. Perl中的哈希(四)

    Perl中的哈希数据结构.相比较于数组,这种数据结构对于数据查找和统计更加方便. 一个特殊的哈希,%ENV,表示当前terminal下,通过setenv设置的variable的键值. 键:环境变量名, ...

  3. perl 中的哈希赋值

    在perl 中,通过代码动态的给哈希赋值,是最常见的应用场景,但是有些情况下,我们事先知道一些信息,当需要把这些信息存放进一个哈希的时候,直接给哈希赋值就好: 哈希的key不用说,就是一个字符串,关键 ...

  4. [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在

    前言 检索一个字符串是否存在于一个数组中, 最主要的想法应该就是对数组进行循环, 逐个推断数组的每一个元素值和给定的值是否相等. (在Java语言还能够把数组转成 List , 在 list 中直接有 ...

  5. perl中的grep函数介绍

    grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...

  6. perl5 第九章 关联数组/哈希表

    第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...

  7. 【转载】Perl中的引用

    为什么使用引用? 在perl4中,hash表中的value字段只能是scalar,而不能是list,这对于有些情况是很不方便的,比如有下面的数据: Chicago, USAFrankfurt, Ger ...

  8. hash 在 perl 中的用法(转载)

    Perl的数据结构中最有趣的一个特性是哈希(hash),它使得在数据片段之间建立键-值(key-value)关联成为可能.虽然这些哈希要远远比普通系统中以数字索引的数组用途更广,但是往往也会使初学者不 ...

  9. Perl中的输入输出流(三)

    Perl中读取标准输入:<STDIN> foreach (<STDIN>)  { print "I saw $_";} 钻石操作符<>:它的参数 ...

随机推荐

  1. rabbitmq之核心构架和原理总结(四)

    前言 前面博文已经将安装配置和站点管理介绍了,现在开始正式学习rabbitmq的使用了: rabbitMQ的构架 rabbitmq作为消息队列,一条消息从发布到订阅消费的完整流程为: 消息 --> ...

  2. Linux 入门记录:十一、Linux 用户基础

    一.用户.组 1. 用户 当我们使用 Linux 时,需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行.用户限制使用者或进程可以使用或不可以使用哪些资源. 2. 组 组用来方便地管理用户. ...

  3. mac 使用清除废纸篓或彻底删除某文件 附加: smb afp ftp NAS 访问服务器相关

    mac 使用清除废纸篓或彻底删除某文件 附加: smb afp ftp NAS 访问服务器相关 mac 下删除文件方法: 1.使用 cleanmymac  使用 cleamymac 的清理  和 逐个 ...

  4. nginx升级步骤

    今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了 1:查看现有的nginx编译参数 /usr/local/nginx/sbin/ng ...

  5. C# 笔记——排序

    首先,一张图看懂8中排序之间的关系: 平均速度最快:快速排序 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 不稳定:快速排序,希尔排序,堆排序. 1. 直接插入排序 基本思想:在要排序的一组数 ...

  6. leetcode 136 137 Single Number

    题目描述(面试常考题) 借助了异或的思想 class Solution { public: int singleNumber(vector<int>& nums) { ; ; i ...

  7. NOI openjudge 1792.迷宫

    一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某个格点时,他只 ...

  8. mongo数据库基本操作--python篇

    连接数据库 MongoClient VS Connection class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB ...

  9. Mybatis学习—XML映射文件

    总结自 Mybatis官方中文文档 Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同 ...

  10. Two Sum ——经典的哈希表的题

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...