哈希和数组是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. Ubuntu安装pip

    首先打开终端 在终端输入:sudo apt-get install python-pip python-dev build-essential [+] 如果需要在Python3下安装pip,那么在py ...

  2. linux 命令行远程登录 后台运行命令的方法

    linux 命令行远程登录 后台运行命令的方法 http://blog.csdn.net/isuker/article/details/55061595 Linux 技巧:让进程在后台可靠运行的几种方 ...

  3. xshell+xming连接服务器虚拟机启动mininet网络

    困于vnc连实验室的服务器虚拟机,一直出现页面不稳定的情况,然后本机虚拟机又带不起来,今天跟学弟交流,知道了ssh连接服务器的办法,心情好晴朗! xshell下载和安装,xshell使用 xshell ...

  4. [How to]基于本地镜像的yum镜像源搭建

    1.简介 本文介绍如何在封闭环境(无外网)下安装离线安装本地镜像与基于本地镜像的yum镜像源. 2.环境版本交代: OS:CentOS-6.7-x86_64-minimal yum: yum-3.2. ...

  5. ofbiz 之minilang解析

    编写一个simple method 首先我们需要对输入参数进行验证 ,判断参数是否完整. 1. 验证 1.1. Login-required :这是一个simple-method的属性,对是否需要登陆 ...

  6. AC日记——【模板】Link Cut Tree 洛谷 P3690

    [模板]Link Cut Tree 思路: LCT模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 30 ...

  7. logrotate日志轮转

    1)基本介绍 适合应用服务日志,系统日志按天切割 如果没有日志轮转,日志文件会越来越大 将丢弃系统中最旧的日志文件,以节省空间 logrotate本身不是系统守护进程,它是通过计划任务crond每天执 ...

  8. Linux rsync数据定时增量备份

    一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...

  9. MS SQL Server迁移至Azure SQL

    SQL Server的数据目前是存在于公司服务器的,现时需要将它迁移至Azure SQL 迁移分两种 数据库结构复制 数据库结构复制与数据迁移至Azure SQL 第1种方法针对的是将现有数据库创建新 ...

  10. javascript 的回调函数

    既然函数可以像其他数据那样赋值给某个个变量,可以被定义.删除.拷贝,那为什么就不能被当成参数传递给其他函数呢? 下面的示例中,我们定义了一个以两个函数为参数的函数.该函数会分别执行这两个参数函数,并返 ...