首页 > 编程语言 >Perl学习笔记2_标量数组哈希

Perl学习笔记2_标量数组哈希

时间:2023-07-15 16:45:07浏览次数:32  
标签:哈希 .. 元素 Perl print 数组 标量 my data0

1. 概述

Perl是弱类型语言, 变量不需要指定类型, 解释器根据上下文自动选择匹配类型.
Perl有三个基本的数据类型: 标量($), 数组(@), 哈希(%).

2. 标量, scalar

标量变量以$标记.

my $a = 123; #数字
my $b = "123"; #字符串

my $c = 0x1F; #16进制
my $d = 047 ; #8进制

my $e = 11.4; #浮点数
my $f = 54.1e+2; #科学计数

标量运算

my $str0 = "hello" . " world"; #字符串拼接
my $str1 = "hello" x 3; #字符重复, hellohellohello, 注意是x不是*.

3. 数组, array

数组变量以@标记

my @a = (20, 30, "xx");
print("$a[0]\n"); #取数组元素, 使用正索引
print("$a[-1]\n"); #取数组元素, 使用负索引

my @b = qw/xx yy zz/; # 省略元素引号/逗号

my @c = (10 .. 20); # 起始值 .. 结束值, 表示10到20的所有元素
my @d = ('a' .. 'f'); # 表示 a到f的所有字母

#遍历数组
foreach my $v (@d){
    print("$v\n");
}

my $e = scalar @d; #数组长度
my $f = $#d ; #数组的最大index.


my $var = "abc";
my @var = ("abc", "def");
push(@d, $var); #向@d末尾添加一个元素
push(@d, @var); #向@d末尾添加多个元素
my $g = shift @d; #弹出@d的第一个元素, 并赋值给$g

my $h = pop @d; # 弹出@d的最后一个元素, 并赋值给$h
my $l = unshift(@d, $var); #把$var添加到@d开头, 并返回新数组长度

数组切片:

my @a = (0 .. 10);
my @b = @a[2, 4, 7]; # 取第2,4,7个元素组成新数组
my @c = @a[3 .. 6] ; # 取第3~6个元素

将str切分为数组: split
语法: split [PATTERN [, EXPR [, LIMIT]]]
PATTERN: 分隔符
EXPR: 待切分的字符串
LIMIT: 元素个数

my $s = "a b c d e fg hi jk";
my @a0 = split(/\s+/, $s); # a, b, c, d, e, fg, hi, jk, 长度为8的数组
my @a1 = split(/\s+/, $s, 3); # a, b, "c d e fg hi jk", 长度为3的数组

将数组元素连接为str: join
语法: join EXPR, LIST
EXPR: 连接符
LIST: 列表或数组

my @a0 = ('i' .. 'n'); # 字母 i到n
my $s0 = join('-', @a0); # i-j-k-l-m-n

数组排序:
sort [subroutine] LIST;

数组合并:

my @a0 = (1, 3, 5);
my @a1 = (2, 4, 6);

my @b0 = (@a0, @a1); # 1 3 5 2 4 6

4. 哈希, hash

my %data0 = (
    "a", "aaa",
    "b", "bbb",
    "c", "ccc",
    "d", "ddd",
);

my %data1 = (
    a => "aaa", # 使用=>时, key不能带空格
    b => "bbb",
    c => "ccc",
    d => "ddd",
);

print("$data0{a}\n");

#遍历hash
foreach my $k (keys %data0) {
    my $v = $data0{$k};
    print("$k $v\n");
}

while(my ($k, $v) = each %data1) {
    print("$k $v\n");
}

#判断key存在
if (exists $data1{"a"}){
    print("key a exists\n");
}

#添加元素
$data0{"e"} = "eee";

#删除元素
delete $data0{"e"};


标签:哈希,..,元素,Perl,print,数组,标量,my,data0
From: https://www.cnblogs.com/gaiqingfeng/p/17556463.html

相关文章

  • Perl学习笔记1_面向对象语法
    perl面向对象没有什么特别的语法,以例子介绍如下.例子中涉及三个文件:main.pl,AllPerson.pm,Person.pm.其中:main.pl是主脚本,它要用到AllPerson.pm.AllPerson.pm是一个class,它要用到Person.pm.Person.pm是一个class,存储人员信息.main.pl#!/usr/bin/perlusestr......
  • LeetCode 519. Random Flip Matrix 哈希Map
    Thereisanmxnbinarygridmatrixwithallthevaluesset0initially.Designanalgorithmtorandomlypickanindex(i,j)wherematrix[i][j]==0andflipsitto1.Alltheindices(i,j)wherematrix[i][j]==0shouldbeequallylikelytobereturne......
  • java哈希取模例子
    Java哈希取模示例流程概述在介绍如何实现Java哈希取模例子之前,我们需要了解一下整个流程。哈希取模是一种常见的数据处理技术,用于将数据分散到固定大小的哈希表或数组中。下面是实现Java哈希取模的基本流程:创建一个哈希表或数组,用于存储数据。将输入的数据进行哈希运算,得到一......
  • .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相
    前言如标题所述,在ASP.NETCore应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NETCore应用程序之后,同样的字符串的哈希值(hash)但不相同了。这是什么意思呢?具体的应用场景是这样的:项目中有一张表的某个字段保存了类似URL这样的字符串,这张表......
  • hyperloglog
    hyperloglog应用场景统计某个网站的UV(UniqueVisitor,独立访客,一般理解为客户端IP(要考虑去重))例如qq空间,还有bilibili视频的点击量用户搜索网站关键词的数量统计用户每天搜索不同词条个数只保存对应的基数估计值(一个集合内不同元素的个数)而不保存对应的数据为什么......
  • 哈希(md5)绕过
    MD5形式MD5一共128位,内容由0-9之间的数字和a-f之间的小写字母组成右边是一个MD5:d41d8cd98f00b204e9800998ecf8427e,共32个字符(一个字符4位)绕过0e绕过原理:0e开头的字符串在参与比较时,会被当做科学计数法,结果转换为0#生成0e开头+后面全是数字的md5编码的字符串的python脚本:......
  • 有效的字母异位词,哈希表方法
    /***有效的字母异位词*力扣题目链接(opensnewwindow)**给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。**示例1:输入:s="anagram",t="nagaram"输出:true**示例2:输入:s="rat",t=......
  • 哈希传递
    哈希传递简介PassTheHash即PTH,就是通过传递Windwos本地账户或者域用户的hash值,达到控制其他服务器的目的在进入企业内网之后,如果是WindowsPC或者服务器较多的环境,极有可能会使用到hash传递来进行内网的横传,现在企业内部一般对于口令强度均有一定的要求,抓取到本地hash后可......
  • 阿里面试官:谈谈对Redis哈希表的理解
    不少朋友问我,能不能搞个八股文精讲,把面试问题讲讲透,于是系列就这样诞生了。咱们第一期先聊聊Redis。相信哈希表大家并不陌生,今天顺便聊聊Redis的哈希表。Hash表回顾哈希表是一种存储数据的结构,它有很多名字(键值对、字典、符号表、映射、关联数组)。在哈希表中,键和值是一一对应的......
  • mybatis: 正确使用mybatis中的mapperLocations配置多个xml扫描路径
    <!--myBatis文件--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><!--自动扫描entity目录,省掉Configu......