访问数组中的元素    $fred[0]   $fred[1]

$number=2.75;

print $fred[$number-1]  结果就是print $fred[1]

特殊的数组索引1.对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大

2.对最后一个元素索引值     例如数组名围rocks   则最后一个索引值为 $#rocks

列表直接量

list literal  (1,2,3)包含1,2,3,这三个数字的列表

(1..5)表示 1-5五个数字

($m,17)

qw简写  省略引号

qw(fred barney betty wilma dino)  列表

列表的赋值  ($fred,$barney,$dino)=("flintstone","rubble","undef");

当变量的个数多个给的哪个的列表值得个数,那么多出来的变量会被设置为undef

例子:($a[0],$a[1],$a[2])=qw/talc mica/;

引用整个数组   在数组名前加上@符号即可    后边不加索引值       例如@rack   代表所有的rack

可用于赋值操作    @rack=qw/bedrock slate lava/;

将一个数组中的列表复制到另一个数组  @copy=@quary

pop和push操作符   栈的操作   新增元素到数组尾端,存放到更高的索引值的新位置即可

pop用于去除数组中的最后一个元素;

例子:    @array=5..9;

$f=pop(@array);#$f的值为9,而@array现在是(5,6,7,8);

也可取消掉括号   pop @array

push 用于添加一个元素或是一串元素 到数组的尾端

push(@array,0);最后一个元素是0

shift和unshift操作符

pop和push都是从数组右边开始弹出和压入

shift和ushift是从左边开始弹出和压入

@array=qw #dino fred barney#;

$m=shift(@array);

//$m值为dino   array数组为(fred barney)

unshift(@array,5);@array现在是只有一个元素的列表(5)

splice操作符

push-pop和shift-unshift均是针对数组首位操作的。如果希望添加或移除数组中间的某些元素,需要用到splice操作符。

splice 目标数组,操作的开始位置,[3参],[4参];

例子:@array=qw(p d f b b);

@removed=splice @array,2;//@array=(p d);

//@removed=(f b b);

3参指定要操作的元素长度,代表要操作的元素个数,可以删除掉数组中间的一个片段;

@array=qw(p d f b a);

@removed=splice @array,1,2;

//@removed=qw(d f);@array=qw(p b a);

4参是要替换的列表  3参设为0 即可不删除地插入新列表;

@array=qw(p d f b a);

@removed=splice @array,1,0,qw(w);

//        @removed变为qw()    @array变为qw(p w d f b a);

字符串中的数组内插

例子:    @rocks为列表数组

print “quartz @rocks limestone \n”;

注意邮件中的@符号   插入的是数组 而非@地址

$fred[3]   为数组   ;${fred}[3]为变量 $fred的值

foreach控制结构

例子:foreach $rock(qw/ b s l /)

{

print "one rock is $rock.\n";

}

在循环中修改了控制变量的值,也同时修改了这个列表元素本身

@rocks= qw/b s l/;

foreach $rock($rocks)

{    $rock="\t$rock";//在@rocks的每个元素前加上制表符

$rock.="\n";//同时在末尾加上换行符

}

print "the rocks are:\n",@rocks;各自占一行,并使用缩排

当循环结束后,控制变量的值仍然是循环执行之前的值,perl会自动保存foreach循环的控制变量并在循环结束之后还原,在循环执行期间,我们无法访问改变已经存储的值,所以当循环结束时,变量仍然保持循环前的值,如果它之前从未被赋值,那就仍然是undef;

$rock="shale";

@rocks=qw /bedrock slate lava/;

foreach $rock(@rocks){

..

}

print "rock is still $rock\n";  //结果为shale

perl最喜欢用的默认变量:$_

省略上例中的$rock   用perl默认的变量$_

foreach (1..10){

print "i can count to $_!\n";

}

例2:$_="fuck you";

print;  //默认打印$_的值

reverse操作符

读取列表或数组的值,并安装相反的次序返回该列表。

例子:@fred=6..10;

@barney=reverse(@fred);#得到10,9,8,7,6

注意 reverse会返回次序相反的列表,但是他不会修改传进来的参数。

例:reverse @fred;#不会修改@fred的值

sort操作符

读取列表的值,会根据内部的字符编码顺序对他们进行排序。

按照字符在计算机内部表示的代码点排序。

例子:@rocks=qw/b s r g/;

@sorted=sort(@rocks);

#得到的结果为b g r s

注意数字当做字符串排序会和期望值有出入

each操作符

对数组调用each会返回数组中下一个元素对应的两个值    该元素的索引以及该元素的值

例子1:use 5.012;#perl版本

my @rocks=qw /b s r g /;

while(my($index,$value)=each @rocks ){

say "$index:$value";

}

例子2:根据索引从小到大一次遍历,借助索引值取得元素的值:

@rocks=qw/b s r g /;

foreach $index(0..$#rocks){

print "$index:$rocks[$index]\n";

}

例子1,2实现的功能相同

******标量上下文与列表上下文*****非常重要

本节非常重要   同一个表达式出现在不同的地方会有不同的意义。

perl期望得到什么,那就是该表达式的上下文

perl第三章 列表和数组的更多相关文章

  1. perl5 第四章 列表和数组变量

    第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮  1.数组的存取  2.字符串中的方括号和变量替换   3.列表范围  4.数组的输出  5.列表/数组的长度  ...

  2. Perl 学习笔记-列表和数组

    笔记来自<<Perl语言入门第5版>> 1. Perl中列表指标量的有序集合,数组则是存储列表的变量, 这两个术语经常混用,不过更精确地说,列表指数据,而数组指变量.数组的表示 ...

  3. <<C++ Primer>> 第三章 字符串, 向量和数组 术语表

    术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针.    缓 ...

  4. perl语言入门总结-第3章-列表与数组

    1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量. 更精确地说,列表指的是数据,而数组指的是变量. 访问数组中的元素 ] = "yabba"; ] = ...

  5. 中级Perl 第三章课后习题

    3. 10. 1. 练习1 [25 分钟] 读当前目录的文件列表并转换成全路径.不能用shell 命令或外部程序读当前目 录.Perl 的File::Spec 和Cwd 两个模块对这个程序有帮助.每个 ...

  6. Python:从入门到实践--第三章--列表简介--练习

    #1.将一些朋友的姓名存储在一个列表中,并将其命名为friends.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. #2.继续使用1中的列表,为每人打印一条消息,每条消息包含相同的问候语 ...

  7. javascript 数据结构和算法读书笔记 > 第三章 列表

    1. 结构分析 列表首先要有以下几个属性: listSize 长度 pos 当前位置 dataStore 数据 我们要通过以下方法对上面三个属性进行操作: length() 获取长度 | getPos ...

  8. perl学习之五:列表和数组

    列表及其形式 数组 数组的赋值 数组的读取 数组片段 数组函数 二维数组简介 总结 1.列表形式: 1.(item1,item2,...) 2.qw(item1 item2 item3 ...) 3. ...

  9. python基础(三)列表、数组、字典

    列表与元组 列表是最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 >>> names = ['wangeq','zlx','jack','rose ...

随机推荐

  1. Android商城开发系列(五)—— 商城首页回到顶部和搜索框布局实现

    今天我们来开发商城的首页[输入搜索框]布局和点击右下角图片回到顶部的效果 搜索功能在App中很常见,尤其是在商城类的项目当中,一般都会提供很强大的搜索功能,App的搜索布局一般都是在App的顶部,如下 ...

  2. Delphi7使用二维码

    参考:http://jingyan.baidu.com/article/e75057f2ad6481ebc81a897b.html 首先下载对应的 dll (已经上传到博客园文件) 然后就是Delph ...

  3. POJ Dollar Dayz 美元假日(完全背包,常规+大数)

    题意:给出整数n和k,n代表拥有的钱数量,k代表有k种工具,其价钱分别为1~k.求n元能有多少种购买的方案. 思路:k最大有100,数量过大,要用大数.其他的基本和完全背包一样. #include & ...

  4. 洛谷 P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  5. Spring 和 Mybatis 整合

    Spring 和 Mybatis 整合 Spring本身的Config文件: 在IDEA下面配置好文件后, 在WEB-INF下面有三个配置文件分别是web.xml, applicationContex ...

  6. Spark Job具体的物理执行

    即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式: 1.f(record),f作用于集合的每一条记录,每次只作用于一条记录 2.f(records),f一次性作用于 ...

  7. React 官方脚手架 create-react-app快速生成新项目

    进入新公司已经半年了,各个业务线,技术栈都已经熟悉,工作也已经游刃有余,决定慢下脚步,沉淀积累,回顾一下所用技术栈所包含的基本知识,以及再公司中的实战. 首先回顾新项目搭建 react脚手架目前使用较 ...

  8. STM32F042开发板学习实践

    之前有粗略地学习过stm32F103的理论知识,但仅GPIO的配置.时钟配置就让人望而却步.现在手头有Nucleo STM32F042的开发板,而且ST已经推出STM32CubeMx图形化的工具软件, ...

  9. python-IE浏览器调用

    IE浏览器驱动添加 selenium官网有提供下载http://code.google.com/p/selenium/downloads/list 这里我用的是IEDriverServer_Win32 ...

  10. 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP

    什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...