Perl:标量,数组,哈希

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl:标量,数组,哈希相关的知识,希望对你有一定的参考价值。

参考技术A 标量是一个简单的数据单元。标量可以是一个整数,浮点数,字符,字符串,段落或者一个完整的网页。

1. 数字标量

2. 字符串标量

注意单引号和双引号的区别

3. 标量运算

4. 多行字符串

5. 特殊字符

如: __FILE__ , __LINE__ , 和 __PACKAGE__ 分别表示当前执行脚本的文件名,行号,包名。

这些特殊字符是单独的标记,不能写在字符串中,例如:

6. v字符串

一个以v开头,后面跟着一个或多个用句点分隔的整数,会被当作一个字串文本。

当你想为每个字符 直接声明其数字值时,v-字串提供了一种更清晰的构造这类字串的方法,而不像 "\x1\x14\x12c\xfa0" 这种不易于理解

Perl数组是一个存储标量值的列表变量,变量可以是不同类型。

数组变量以 @ 开头。访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取

1. 创建数组

数组变量以 @ 符号开始,元素放在括号内,也可以以 qw 开始定义数组

@array = (1, 2, 'Hello');

@array = qw/ 这是 一个 数组/;

第二个数组使用 qw// 运算符,它返回字符串列表,数组元素以空格分隔。当然也可以使用多行来定义数组:

@days = qw/google

taobao

...

runoob/;

也可以按索引来给数组赋值,如下所示:

$array[0] = 'Monday';

...

$array[6] = 'Sunday';

2. 访问数组元素

访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:

数组索引值从 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。

负数从反向开始读取,-1 为第一个元素, -2 为第二个元素

3. 数组序列号

Perl提供了可以按序列输出的数组形式,格式为 起始值 + ... + 结束值

4. 数组大小

数组大小由数组中的标量上下文决定的,数组长度返回的是数组物理大小,而不是元素的个数

5. 添加和删除数组元素

Perl提供了一些有用的函数来添加和删除数组元素: push, pop, shift, unshift

实例:

6. 切割数组

数组索引需要指定有效的索引值,可以是正数后负数,每个索引值使用逗号隔开。

如果是连续的索引,可以使用 .. 来表示指定范围:

7. 替换数组元素

Perl中数组元素替换使用splice()函数,语法格式如下:

splice(@array, offset, length, list)

参数说明:

@array:要替换的数组

offset:起始位置

length:替换的元素个数

list:替换元素列表

实例:

8. 将字符串转换为数组

Perl中将字符串转换为数组使用split()函数, 语法格式如下:

split(pattern, expr, limit);

pattern:分隔符,默认为空格。

expr:指定字符串数。

limit:如果指定该参数,则返回该数组的元素个数。

9. 将数组转化为字符串

Perl中将数组转换为字符串使用join()函数,语法格式如下:

join(expr, list);

参数说明:

EXPR:连接符。

LIST:列表或数组。

10. 数组排序

Perl中数组排序使用sort()函数,语法格式如下:

sort(subrountine, list);

参数说明:

SUBROUTINE:指定规则。

LIST:列表或数组。

实例:
注意:数组排序是根据ASCII数字值来排序。我们在对数组进行排序时,最好先将每个元素转换成小写后再排序。

11. 特殊变量:$[

特殊变量 $[ 表示数组的第一索引值,一般都为0, 如果将 $[  设置为1,则数组的第一索引值即为1,第二个为2,以此类推

实例:

一般情况不建议使用特殊变量 $[ ,在新版 Perl 中,该变量已废弃。

12. 合并数组

数组的元素是以逗号来分割,我们也可以使用逗号来合并数组,如下:

13. 从列表中选择元素

一个列表可以当作一个数组使用,在列表后指定索引值可以读取指定的元素:

哈希是key/value对的集合。 Perl中哈希变量以百分号(%)标记开始。

访问哈希元素格式:$key

1. 创建哈希

一,为每个key设置value

$data'google' = 'google.com';

$data'w3cschool' = 'w3cschool.cn';

二,通过列表设置

(1). 列表中第一个元素为key, 第二个元素为value

%data = ('google', 'google.com', 'w3cschool', 'w3cschool.cn', 'taobao', 'taobao.com');

(2). 也可以使用=>符号来设置key/value

%data = ('google'=>'google.com', 'w3cschool'=>'w3cschool.cn', 'taobao'=>'taobao.com');

(3). 使用 - 来代替引号

%data = (-google=>'google.com', -w3cschool=>'w3cschool.cn', -taobao=>'taobao.com');

实例:

2. 访问哈希元素

访问哈希元素的格式:$key

3. 读取哈希值

哈希值提取数组 ,语法格式为:@key1, key2

4. 读取哈希的key和value

读取所有key

可以通过使用 keys 函数读取 哈希所有的键值,语法格式如下:

keys %hash

可以使用 values 函数来读取哈希所有的值,语法格式如下:

values %HASH

5. 检测元素是否存在

如果在哈希读取不存在的key/value对,会返回undefined值,且执行时会有警告提醒。为了避免这种情况,可以使用 exists 函数来判断key是否存在,存在的时候读取

6. 获取哈希的大小

哈希大小为元素的个数,我们可以通过key或value的所有元素数组,再计算数组元素多少来获取哈希大小

7. 哈希中添加或删除元素

添加key/value对可以通过简单的赋值来完成。但是 删除哈希元素需要使用 delete 函数

perl 第六弹 变量 II

记得点击蓝字关注我们哦!


0 1

上期回顾

  • Perl变量主要有三种类型:变量(标量型变量)、数组、哈希

  • 标量型变量含有单个值标量型变量的前缀是$

  • 变量名是大小写敏感

  • 变量是以字母开头的,则它可以由任意数目的字母(下划线也算作字母)或数字构成

0 2

数组


Perl并不要求数组元素具有相同的数据类型。数组元素可以是数字和字符串的混合体。在Perl中,数组是一个有名字的列表,含有 有序的标量型变量集合。 数组名必须以@开头。数组名的后面是位于方括号([ ])之间的下标,它们都是非负整数, 从0开始计数

在初始化数组时,用户可以把所有元素放在括号中,并以逗号分隔它们。

也可以用qw创建列表(类似于qq、q 和qx)。列表中各项内容将作为带有单引号的字符串来处理。

# 使用一个含有4个字符串的列表,对数组@name 进行初始化@name=("Guy", "Tom", "Dan", "Roy");# 创建数组@grades, 将(100, 90, 65, 96, 40, 75)列表赋值给数组@grades@grades=(100, 90, 65, 96, 40, 75);# 创建数组@items, 将($a, $b, $c)列表赋值给数组@grades@items=($a, $b, $c);# 创建空数组@empty@empty=();# 将数组@items赋值给一个标量型变量$size。该标量的值将是数组中的元素个数# 在本例中,其值等于3$size=@items;# 创建数组@list,从2到10的所有整数列表赋值给数组@list# .. 为范围运算符,类似如下例,表示A-Z,a-z# @alpha=( 'A' .. 'Z', 'a' .. 'z' );@list=(2..10);# qw(引用字)结构后面跟随选定的定界符。# 列表中每个字都作为带有单引号的字来对待。末尾的定界符说明列表到此结束# qw 结构支持任何成对的字符如()、{}、<> 和[] 作为定界符@mammals = qw/dogs cats cows/;@fruit = qw(apples pears peaches);



perl 第六弹 变量 II

上图中表示一个含有5个元素的列表。其中元素下面对应的数字,即元素下标。如上所述, 下标从0开始计数。元素上面为元素对应倒序下标。


(1)访问列表中的值

# Populating an array and printing its values@fruits = ('apple','banana','watermelon','orange');print "The index 0 element of the array is $fruits[0]
"print "The index -5 element of the array is $fruits[-5]
";print "the second element is $fruits[1]
";print "the second element is $fruits[-4]
";

__END__(Output)The index 0 element of the array is appleThe index -5 element of the array is applethe second element is bananathe second element is banana


(2)列表删除元素

# shift函数弹出数组的第一个元素,即下标为0的元素shift @fruits;# 此时 @fruits = ('banana','watermelon',,'orange')########################################################### pop函数会删除并返回数组的最后一个元素pop @fruits;# 此时@fruits = ('banana','watermelon')


(3)列表添加元素

# 使用push函数,在数组@fruits中,添加"pineapple"元素push @fruits,"pineapple";# 此时@fruits = ('banana','watermelon','pineapple')#################################################### unshift函数传入一个或多个值(或者0个) 并把它放在数组的开头unshift @fruits, 'Moo';# 此时@fruits = ('Moo','banana','watermelon','pineapple')


(4)更新列表

# 通过元素下标进行修改# 修改前# @fruits = ('Moo','banana','watermelon','pineapple')$fruits[0] = 'pear';# 修改后# @fruits = ('pear','banana','watermelon','pineapple')
0 3

总结

  • 数组是一个有序的列表

  • 数组名以@开头

  • 数组下标以0开始,倒序下标从左向右以-1开始

  • 通过数组元素下标访问元素,更新元素

  • 通过shift、pop函数删除数组元素

  • 通过unshift、push函数数组添加元素




END






上期推荐阅读
@




以上是关于Perl:标量,数组,哈希的主要内容,如果未能解决你的问题,请参考以下文章

Perl 引用的知识整理

5-Perl 变量

Perl如何访问作为另一个哈希值的数组元素的哈希?

小白学Perl之初始哈希

通过引用和标量变量传递 Perl 哈希

Perl引用介绍