[译]Perl中的数组
原文:http://perl5maven.com/perl-arrays
在本篇Perl教程中,我们将会学习Perl中的数组.本文只是对Perl中的数组进行了一下概述,在以后的文章中,我们还会更加详细的讲解.
在Perl中,数组类型的变量名称以@符号开头.
因为我们坚决要求在自己的代码中使用严格模式(use strict),所以在使用数组变量前,你必须使用my关键字来声明它.
要注意,我们假定本文中所有的代码示例都已经包含了下面这样的文件头:
use strict;use warnings;use 5.010;
首先,声明一个数组变量是这样写的:
my @names;
然后是声明变量的同时并进行初始化:
my @names=("Foo","Bar","Baz");
打印数组
use Data::Dumper qw(Dumper); my @names = ("Foo","Bar","Baz");say Dumper \@names;
输出结果如下:
$VAR1 =['Foo','Bar','Baz'];
遍历数组
my @names = ("Foo","Bar","Baz");foreach my $n (@names){ say $n;}
输出结果如下:
FooBarBaz
访问数组元素
my @names = ("Foo","Bar","Baz");say $names[0];
这里需要特别注意的是:当访问某单个的数组元素的时候,变量名的前导符号应该使用$,而不是原来的@.有些人也许不理解为什么要这么做,但其实原因也很简单.
你只需要理解:@符号表示双数,而$符号表示单数.当访问单个的数组元素时,该元素表现的完全和普通标量变量相同,所以要用$.
获取数组中的最大索引号
数组的索引号最小从0开始,最大索引号的值可以通过$#name_of_the_array变量获取到,所以:
my @names = ("Foo","Bar","Baz");say $#names;
会输出2,因为数组的索引号只有3个:0,1,2.
计算数组长度
在Perl中,并没有一个专门用来获取数组长度的函数,但是还是可以通过其他方法获取到的.第一种办法就是:数组的长度其实就是数组的最大索引号加1,因此,如果想获取上例中的数组(@names)的长度,则可以使用表达式$#names+1来计算得出.
另外,还可以使用scalar函数来获取数组的长度:
my @names = ("Foo","Bar","Baz");say scalar @names;
上例将会输出3.
遍历数组索引
在某些情况下,我们不光需要遍历到数组元素的值,还需要遍历到元素值对应的索引.这种情况下,我们就需要这么做:
my @names = ("Foo","Bar","Baz");foreach my $i (0.. $#names) {say "$i - $names[$i]";}
输出结果如下:
0-Foo1-Bar2-Baz
Push函数
push函数会在原数组的最右边插入一个新的数组元素.
use Data::Dumper qw(Dumper); my @names = ("Foo","Bar","Baz");push @names,'Moo'; say Dumper \@names;
输出结果如下:
$VAR1 =['Foo','Bar','Baz','Moo'];
Pop函数
pop函数会从原数组中删除最右边的那个数组元素,并且返回删掉的那个元素.
use Data::Dumper qw(Dumper); my @names = ("Foo","Bar","Baz");my $last_value = pop @names;say "Last: $last_value";say Dumper \@names;
输出结果如下:
Last:Baz$VAR1 =['Foo','Bar',];
shift函数
shift函数会从原数组中删除最左边的那个数组元素,并且返回删掉的那个元素.
use Data::Dumper qw(Dumper);
my @names = ("Foo","Bar","Baz"); my $first_value = shift @names;say "First: $first_value";say Dumper \@names;
输出结果如下:
First:Foo$VAR1 =['Bar','Baz',];
[译]Perl中的数组相关推荐
- Perl中判断数组或hash为空
Perl中没有bool类型 perl中没有bool类型,所有的判断都是通过数字类型和字符串类型来进行的. 哪些类型为false 标量只有三种,数字0,空字符串"", 字符串'0'( ...
- alxctools索引超出了数组界限_[译]V8中的数组类型
译者:蒋海涛 JavaScript 对象可以和任何属性有关联.对象属性的名称可以包含任何字符.有趣的是 JavaScript 引擎可以选择名称为纯数字的属性来进行优化,而这个属性其实就是数组 inde ...
- java在循环中删除数组元素,在循环Perl中删除数组中的元素
好吧,这是处理问题的一种方法(在某种程度上我理解你想做什么) . 每当您需要回答有关成员资格的问题时,您可能希望使用哈希值 . use strict; use warnings; my @array1 ...
- perl数组硬引用_Perl基础 Perl引用和数组用法解析
本文和大家重点讨论一下Perl引用和数组的概念,Perl5中的两种Perl引用类型为硬引用和符号引用.符号引用含有变量的名字,它对运行时创建变量名并定位很有用,基本上,符号Perl引用就象文件名或UN ...
- perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次
perl 哈希数组的哈希 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find the fir ...
- [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在
前言 检索一个字符串是否存在于一个数组中, 最基本的想法应该就是对数组进行循环, 逐个判断数组的每个元素值和给定的值是否相等. (在Java语言还可以把数组转成 List , 在 list 中直接有 ...
- Perl中怎样从数组中删除某个值?
我不确定undef是否和从数组中消除值有确切的关系,猜测一下,如果我们将undef视为"空",那么会有一些联系.但通常来说,将某些东西赋值为undef和删除某些东西是不一样的. 首 ...
- [译] ES6+ 中的 JavaScript 工厂函数(第八部分)
本文讲的是[译] ES6+ 中的 JavaScript 工厂函数(第八部分), 原文地址:JavaScript Factory Functions with ES6+ 原文作者:Eric Elliot ...
- Perl 中的正则表达式
9 Perl 中的正则表达式正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握 ...
最新文章
- π是无理数证明定积分_证明圆周率是无理数很容易?人类花了2000年!
- docker 鱼龙混杂之基础操作篇
- 吴恩达、谷歌、Facebook纷纷开源研究数据集
- 泛型技巧系列:简单类型选择器
- jeecms导入myeclipse时web-inf下html出错,我部署到myeclipse 出现问题
- 计算机原理与技术索引的应用,经常学一点计算机底层原理系列之索引
- linux 用户创建,权限,分组
- 智能穿戴市场群雄逐鹿,OPPO入局能没有杀手锏?
- tomocat设置首次访问时的页面
- (转)使用CUnit进行单元测试和覆盖率统计
- dll反编译工具ILspy下载及使用
- vue3 + typescript + echarts后端动态获取数据显示问题总结
- 【深度学习之美笔记】人工“碳”索意犹尽,智能“硅”来未可知(入门系列之二)
- Luogu5339 [TJOI2019]唱、跳、rap和篮球 【生成函数,NTT】
- php iphone图片旋转图片,php识别翻转iphone拍摄的颠倒图片
- XCTF-PWN welpwn
- System.IO.FileNotFoundException: Could not load file or assembly ‘System.Data.SQLite.dll‘ or one of
- java中图标_java中图标按钮
- 【大学物理·恒定电流的磁场】磁感应强度
- Dockerflie概述
热门文章
- 老杨和驳客都在胡言乱语——千条道理不如一个事实
- 开源的 Snort 入侵检测系统中存在高危漏洞
- 工业互联网巨头 GE Digital 修复SCADA 软件中的两个高危漏洞
- Atlassian 域名被曝一次点击账户接管漏洞 可导致供应链攻击
- spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)
- 【安全牛学习笔记】COCAT
- Golang学习(10)——bufio包
- [HeadFirst-HTMLCSS入门][第十章div,span]
- ubuntu新建一个账户并将其加入sudo用户组
- 配置系列:(事物管理)ssm中applicationContext-transaction.xml的简单配置