1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量。

更精确地说,列表指的是数据,而数组指的是变量。

访问数组中的元素

$fred[] = "yabba";
$fred[] = "dabba";
$fred[] = "doo"; $number = 2.71111;
print $fred[$number-]; #dabba 如果下标不是整数,会舍去小数。
print $fred[] #如果不存在下标则返回 undef

特殊数组索引, 获得最后一个元素

$rocks[] = "one";
$rock[] = 'last';
print $rock[$#rock] ; #last
print $rock[-]; #last

列表直接量

(,,)  (,,,)  ("friend",)  () (..)
(1.7..5.7) (..)空列表 (,..,,)
("fred", "barrbey"m "wilma")

qw简写

qw(fred barrbey wilma)

qw允许使用任何标点符号作为定界符。

qw/ fred barney betty /   #可以用反斜杠\转义定义符

列表的赋值

($fred, $barney, $dino) = ('a', 'b','c');
print $barney; #结果为b ($a,$b)=($b,$a); #a,b两个变量值交换

数组变量赋值及简写

($rocks[], $rocks[], $rocks[]) = qw/a b c/;
@rocks = qw/a b c/; #上面方法的简写

数组操作

@a =qw/a b/;
@b =(@a, "c", 'd'); #a,b,c,d

pop与push操作, 操作的是最右端

@array = ..;
$array1 = pop(@array); #会从array中移除最后一元素元素8,返回8
push @array, ; #向后加100

shift和unshift操作符, 操作的是最左端

@array = qw# a b c d #;
$m = shift(@array); #@array值为(b,c,d)
unshift(@array, ); #向前加入100即(100,b,c,d)

splice操作符, 一共4个参数,2个可选参数, 次序为(目录@array,起如位置,元素的长度,要插入的@array)

@array = qw( a b c d);
@removed = splice @array, ;
print @removed; #qw(c,d)
print @array;#qw(a,b)

插入一个元素

@array = qw( a b c d);
@removed = splice @array, , ,qw(g);
print @array;#qw(a,b,g,c,d) 删除0个,然后在2个位置插入g,

foreach使用, 如何在foreach中使用,不会改变foreach那个对象的值

foreach $rock (qw/a b c d/){
print "$rock\n"
}

最喜欢用的默认变量 $_  , 下面例子会打印从1到100的数值

foreach (..){
print "$_ \n"
}

reverse操作符, 反序

@newone = reverse ..; #不会影响原来的数组

sort操作符,后面再讲自定义排序,,默认根据ascii码大小排序

@numbers = sort ..; # 100 101 102 97 98 99

each操作, 遍历会带索引

use 5.0.;
my @rocks = qw/a b c d/;
while (my($index, $value) = each @rocks){
print "$index:$value,"; #0:a,1:b,2:c,3:d,
}

标题上下文与列表上下文(重点)

@people = qw(d a b c);
@sorted = sort @people; #结果为 qw(a,b,c,d)
$number = + @people; #结果为46 #普通运算符
@list = @people; #得到4个人的列表
$n = @people; #得到人数3

标题表达式

$fred = something; #标题上下文
@pebbles = something; #列表上下文
($wilma, $betty) = something; #列表上下文
($dino) = something; #还是列表上下文 @fred= *; #得到仅有单个元素的列表(42)
@barney = "hello".' '."world"; #("hello world")

强制指定标量上下文

@rocks = qw(a b c d);
print "num is ".scalar @rocks; #num is 4

列表上下文的STDIN

@lines = <STDIN>;
chomp(@lines); #去掉所有换行符

perl语言入门总结-第3章-列表与数组的更多相关文章

  1. Perl语言入门:第六章习题:处理用户所指定的名字并汇报相应的姓。

    37 print "\n----------------------------------_exercise_6_1--------------------------\n";  ...

  2. perl语言入门总结-第4章-子程序

    子程序定义和返回值 sub sum{ print "调用了子程序\n"; $a + $b; #后一行为返回值 } ; ; $s =∑ #34 调用子程序 子程序中的参数,参数固定( ...

  3. perl语言入门总结-第5章-输入输出

    读取标准输入 chomp($line = <STDIN>); #去掉后面的换行 while (defined($line = <STDIN>)) { print "I ...

  4. perl语言入门总结-第2章

    $what ='steak'; print "fred ate $n ${what}s.\n"; 布尔值 如果是数字0为假, 如果是空字符串''为假, 如果即不是数字也不是字符串, ...

  5. Perl语言入门:第七章习题:输出文件中包含一个大写字母的所有行,不输出一行的内容全是大写的

    文件内容: bash-2.03$ cat file_4_ex_ch7.txt anonymous attribute demolition grammar rules indices refernce ...

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

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

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

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

  8. Perl 语言入门1-5

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

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

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

随机推荐

  1. SublimeText插件vue Syntax Highlight : vue语法高亮

    参考:http://www.cnblogs.com/cosnyang/p/6290950.html Vue.js 的单文件组件(*.vue)在 sublime 编辑器中是不被识别的.若要想高亮显示,需 ...

  2. 处理移动端自适应布局的方法- calc()与vw

    在处理移动端自适应布局时,目前前端最流行的方法应该就是使用媒体查询,来设置HTML的字体大小,然后用rem为单位对Dom的宽高进行设置,这个方法的优势在于兼容性方面很好,劣势则在于当前市场上不同的机型 ...

  3. iOS开发之Objective-c的AES256加密和解密算法的实现

    原文:http://www.lidaren.com/archives/1470 高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法. 以下实现 ...

  4. C++ Knowledge series Layering

    Programming has its own methodology. Layering is everywhere in real life,this why the pruchase and s ...

  5. SQLSERVER 2008 R2 事务日志已满

    方法一: USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName ...

  6. [topcoder]TheGridDivTwo

    http://community.topcoder.com/stat?c=problem_statement&pm=13628&rd=16278 标程是BFS,我用DFS,都可解. 这 ...

  7. Office加载项对Excel进行读写操作

    转载自我的个人主页 前言 在开发ExcelWeb插件的时候,一大亮点就是可以在web项目中操作Excel,读取Excel的内容,也可以将服务端的数据写入的 Excel中,大大方便的用户使用Excel, ...

  8. day004-Map类

    1.Map集合概述 Map是一个接口,只要是实现了该接口的类就是一个双列集合. 双列集合就是每次存储元素时需要存储两个元素的集合. 这两个元素称为键值对, Key Value ==>映射关系 特 ...

  9. 【js基础修炼之路】- 手把手教你实现bind

    手写bind前我们先回顾一下bind有哪些特性,以便更好的理解bind和实现bind. bind的特性 var obj = { a: 100, say(one, two) { console.log( ...

  10. 【CCPC-Wannafly Winter Camp Day4 (Div1) H】命命命运(概率DP)

    点此看题面 大致题意: 有\(6\)个人玩大富翁,共有\(n\)块地,进行\(500\)轮,已知每个人掷骰子掷出\(1\sim6\)的概率.当某人到达一块未被占领的地时,他可以占领它.求最后每个人占有 ...