1、列表也是数组的形式:(1,'a',2,3,4)

  元素可以是任意类型,变量,表达式

2、空列表:()

  单元素列表:(2)  。与值2不同

  qw(1 $a str)    #qw是用空格作为分隔符,元素中不能有空格,否则视为两个元素,()可变为<>

3、范围运算符:..

4、数组:列表的存储

形式:@a=(1,2,3)

  与$a是不同的变量

  @a的初始值是空 :()

元素形式:   $a[0]   #注意是$  美元符号

  负索引:倒数第一是-1  $a[-1]

5、数组的赋值:

  @a=(1,2,3,4)

  @a=(1,2,3,4),@a=@b

  @b=(2,3),@a=(1,@b,4)

  @b='a' x 4; @b=('a','a','a','a')

  @b = <>; 从标准输入(键盘)读出一行赋予元素,最后用 ctrl+d结束输入

  元素操作:

    改变元素的值:$a[1] = 3 ;  @a=(1,3,3,4)

    对超出数组大小的元素赋值: $a[5]=6 ; @a=(1,2,3,4,"",6)  数组自动增长,原来没有的元素值为NULL

    读不存在的元素为空: $x = $a[7] ;

6、数组的读取

  单个元素的读取: $a=$a[1]

  多个元素的读取:

      每个元素对应到变量: @a=(1,2,3) ;($x,$y,$z)=@a; - ->$x=1 $y=2 $z=3

      多余的变量为空:($x,$y,$z,$zz)=@a; - ->$x=1 $y=2 $z=3 $zz=""

  一些用法:

    $a =@a;       #这样$a的值是@a的长度

    ($a) =@a;    #这样$a的值是@a的第一个元素

    $a=(1,2,3)    #把一个列表直接赋值给变量 则$a =最右面的元素 也就是3

    $#a :它的值是元素的最后一个元素的索引。加1即为长度。但对其赋值就改变了数组的长度

  数组的输出:

    print @a     中间没空格

    print "@a"       中间有空格

7、数组片段:访问数组的部分元素,而不是全部元素

  用法:

    @a =(1,2,3,4,5)

    读出:@sub = @a [0,1,3]   @sub=(1,2,4)

    赋值:@a[1,3]=('a','b') ;  @a =(1,'a',3,'b',5)

  范围:

    @sub = @a[1..3]            则 @sub=(2,3,4)

    $x = 1,$y=3;@sub=@a[$x..$y];   则 @sub=(2,3,4)    #这样指代也可以

  列表:

    @b=(1,2,3); @sub = @a[@b];     则@sub=(2,3,4)

    @b=(2,3); @sub=@a[1,@b];       则 @sub=(2,3,4)

    ($a,@b,$c)=(1,2,3,4,5);           则@b=(2,3,4,5) ,$c=""

  数组元素的重叠:

    交换:@a[1,2]=@[2,1]   @a=(2,1,3,4,5)

    重叠:@a[1,2,3]=@a[3,2,4]   @a=(1,4,3,5,5)

8、数组操作函数

  @a = (1,12,4,8,20)

  1、sort {代码块}(数组):

    不要代码块时:print sort(@a);    #(1,12,20,,4,8)

    怎么实现大小的排序呢:print sort {$a<=>$b}(@a);    #这是默认方式,记住就好 (1,4,8,12,20)

  2、reverse @a: 数组的反序

  3、chop  @a :数组的每一个元素都截取最后一个字符

  4、shift (@a) :删除数组第一个元素,返回删除的元素。如直接输出shift(),则对@ARGV数组使用

  5、unshift(@a,$a):在数组开头增加元素,返回新数组长度

  6、push(@a,$a):在数组末尾增加元素

  7、pop(@a) : 在数组末尾删除元素

  8、join('连接符',@a)把数组连接成一个字符串

      @a=('a','b');  join('_',@a);      - ->  'a_b'

            join('_','a','b');    - -> 'a_b'

  9、split(/模式/,分割串,长度)

      模式:缺省为空格,可省略

      分割串:缺省为$_,可省略

      长度:分割成几个元素,可省略,则全部分割

      $s='a,b,c'; @a=split(/,/,$s); @a=('a','b','c')       #以逗号为分割符进行切割

             @a=split(/,/,$s,2);  @a= (     'a'   ,     'b,c'    )       #指定数组的长度为2,只有@a[0]  和@a[1]

  10、wantarray():当期望返回数组时为真,返回简单变量时为假

      先定义一个子函数:sub mysub() {print wantarray() ? "数组\t" : "变量\n" ;}

      然后在用:@a=mysub;

           $a=mysub;             #第一个输出数组  第二个输出变量

  11、splice:

    @a=splice(@a,skip,length,@newlist)

     对@a操作,跳过skip个元素,然后开始用@newlist替换length个元素。@newlist和length可以不等长,无论@newlist多长,它只占用(或者说替换)length长的元素位置

       #当length=0时为插入。splice(@a,-1,0,@n)    #在末尾追加

       #当@newlist为空则为删除

     #当@newlist和length都省略时,其后的全部删除。split(@a,3);

  12、正则表达式在数组中的用法

      @found=grep(/patten/,@search) 对 @search的每一个元素进行搜索,匹配的元素返回到@found数组中

  13、map  

      map(expr,@list );   对每一个元素进行expr(你指定让他干啥他干啥) ,返回运算后的数组。元素用$_代表。

      举个栗子:

        map($_+1,(1,2))  - ->(2,3)

  14、二维数组

      $aoa=[[1,2,3,]],['a','b','c']   #至于为什么美元符  记住就好

        内含两个子数组         (1,2,3)   ('a','b','c')

      子数组访问:@{$aoa -> 0}                                                 #至于为什么这样访问  记住就好  @开头 紧接着用大括号{}圈起来

      子数组元素访问:@{$aoa -> 0}[0,1]

      元素访问   : $aoa ->[0][0]

      

      有一维数组构成二维数组:

        @a=(1,2,3)

        @b=('a','b','c')

        $aoa=[[@a],[@b]];

    

Perl语言入门--4--列表的更多相关文章

  1. Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线。

    Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线.

  2. Perl语言入门14-17

    ---------第十四章 字符串与排序------------------- index查找子字符串 my $stuff = "howdy world!"; my $where ...

  3. Perl语言入门

    Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl语法基础: (1)Perl程序由声 ...

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

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

  5. Perl语言入门(中文版)(第6版) 东南大学出版社

    第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? ...

  6. Perl 语言入门6-9

    ---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...

  7. Perl语言入门--1--perl的包安装

    A.  手工安装 从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz.假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装). # cd /usr ...

  8. Perl语言入门10-13

    ----------第十章 其他控制结构---------------- unless结构 unless($fred =~ /\A[A-Z_\w*\z]/i){print "yes" ...

  9. Perl 语言入门1-5

    第一章 简介 perl -v 文字处理,编写小型CGI脚本(Web服务器调用程序)的最佳语言 CPAN: Perl综合典藏网 shebang: #! /usr/bin/perl 或#! /usr/lo ...

  10. Perl语言入门--3--文件读取与写入

    现有文件test.txt,内容为:"123\n456" 1,打开文本test.txt #!/usr/bin/perl open d,"test.txt"; d ...

随机推荐

  1. VueX源码分析(4)

    VueX源码分析(4) /module store.js /module/module.js import { forEachValue } from '../util' // Base data s ...

  2. 【贪心 计数 倍增】bzoj4458: GTY的OJ

    倍增写挂调了半个晚上 Description 身为IOI金牌的gtyzs有自己的一个OJ,名曰GOJ.GOJ上的题目可谓是高质量而又经典,他在他的OJ里面定义了一个树形的分类目录,且两个相同级别的目录 ...

  3. poj 2236 网络连接问题 并查集

    题意:n台电脑,当两台之间的距离小于d的时候可以连接. 题目会进行操作“修复”还有“查询是否已经连接”.只要在查询的时候输出YES或者ON 思路: 把可以相互连接的 即两者之间的距离小于 d  q[i ...

  4. JAVA中变量的类型及命名规范

    1. 计算机是一种极度精确的机器;2. 要将信息存储在计算机当中,就必须指明信息存储的位置和所需的内存空间;3. 在JAVA编程语言当中,使用声明语句来完成上述的任务; 4. 变量的类型: 5. 变量 ...

  5. SPOJ FFT TSUM

    第一道FFT的题目. 在网上找了很多FFT的资料,但一直都看不懂,最后是看算法导论学的FFT,算法导论上面写的很详细,每一步推导过程都有严格的证明. 下面说这道题 题意: 给一个序列s,有n个不互相同 ...

  6. MySQL数据库详解(一)执行SQL查询语句时,其底层到底经历了什么?

    一条SQL查询语句是如何执行的? 前言 ​ 大家好,我是WZY,今天我们学习下MySQL的基础框架,看一件事千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MyS ...

  7. Mybatis中接口和对应的mapper文件位置配置详解

    Mybatis中接口和对应的mapper文件位置配置详解 原链接为:https://blog.csdn.net/fanfanzk1314/article/details/71480954 今天遇到一个 ...

  8. 通用的前端js代码

    1.判断是否移动设备的浏览器,是否允许触摸事件.(响应式网页) if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i. ...

  9. tomcat6-输入输出buffer设计

    之前写的一个ppt 搬到博客来

  10. rocketmq源码分析2-broker的消息接收

    broker消息接收,假设接收的是一个普通消息(即没有事务),此处分析也只分析master上动作逻辑,不涉及ha. 1. 如何找到消息接收处理入口 可以通过broker的监听端口10911顺藤摸瓜式的 ...