
列表与数组
区别:列表指的是数据,而数组指的是变量。列表的值不一定要放在数组里,但每个数组变量都一定包含一个列表。
我的理解是:列表应该是单维数组;而数组则可以是单维,也可以是多维。列表里存的只能是标量,而数组则可以写成包含数组、列表、标量等。
数组:
1、通过下标数字来引用数组元素:$fred[0]="ppp"
2、对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大,在扩展中需要创建增补 元素的默认值为undef。
$rocks[0]="ccc"
...
$rocks[3]="ppp"
$rocks[99]="sss" #现在有95个undef元素
3、最后一个元素的索引值:$#rocks
$rock[$#rock] ="lll"
4、负数数组索引值
eg:在数组中有3个元素,则-1:最后一个元素 -2:中间的元素 -3:第一个元素
$rock[-1] ="lll"
列表:
1、列表直接量
1)可以写成数组的样子
(1,2,3,)---逗号会被忽略
(“fred”,4.5)---两个元素 “fred”和4.5
(1..100)---100个整数构成的列表;
<..范围 *** 作符,从左边的数字计数到右边,每次加1,以产生一连串的数字>
(5..1)#空列表:..仅向上计数
("qqq","www","eee","rrr","ttt")
qw简写:
qw(qqq www eee rrr ttt)
qw的功能:加上引号的单词,perl会将其当成单引号内的字符串来处理,所以不能像双引号内的字符串一样使用\n或$fred.
定界符:上面的例子都是以一对圆括号作为定界符,perl允许使用任何符号作为定界符。
qw !qqq www eee rrr ttt !
2、列表的赋值
1)直接赋值
($fred,$barney,$dino)=("qqq",undef);
多出来的值会被忽略掉
变量个数多过给定的列表值,多出来的变量将设成undef
2)互换两个变量的值
($fred,$barney)=($barney,$fred)
========================================
($fred,$barney)=("ccc","ddd");
($fred,$barney)=($barney,$fred);
print "\$fred=$fred\n";
print "\$barney=$barney";
结果:
E:\perl>perl p.pl
$fred=ddd
$barney=ccc
=========================================
3)引用整个数组--@
@rocks= qw(qqq www eee rrr);
$dino = "granite";
@quarry = (@rocks,"crushed",$dino);
则@querry拥有了6个元素的列表。
=============================
@rocks= qw(qqq www eee rrr);
$dino = "granite";
@quarry = (@rocks,$dino);
print "@quarry";
结果:
E:\perl>perl p.pl
qqq www eee rrr crushed granite
============================
4)数组的复制
@quarry = @rocks;#将一个数组中的列表复制到另一个数组中。
3、pop和push *** 作符
pop *** 作符:
功能:取出数组中最后一个元素
返回值:该最后一个元素值,如果数组为空,返回undef
push *** 作符:
功能:添加一个元素到数字的尾端
push(@array,@others)
push和pop的第一个参数 都必须是需要 *** 作的那个数组。
4、shift和unshift *** 作
shift *** 作符:
功能:取出数组开头的第一个元素
$m=shift(@array);
unshift(@array,5)
5、字符串中的数组内插
1)内插时,会在数组的各个元素之间自动添加分隔用的空格
2)首尾不会增添额外空格
@rocks= qw(qqq www eee rrr);
#$dino = "granite";
#@quarry = (@rocks,$dino);
print "kkk @{rocks}lll";
E:\perl>perl p.pl
kkk qqq www eee rrrlll
E:\perl>
6、foreach控制结构
控制变量不是列表元素的复制品,它就是列表元素本身;
================================
@y= qw(qqq www eee rrr);
foreach $rock(@y) {
$rock ="\t$rock";
$rock.="\n";
}
print "the rocks are:\n",@y;
结果:
perl p.pl
the rocks are:
qqq
www
eee
rrr
E:\perl>
================================
7、reverse *** 作符
功能:读取列表(数组)的值,并按相反的次序返回该列表。
返回值:返回次序相反的列表,不会修改传进来的参数。
===============================
@fred =(0..9);
$_=reverse(@fred);
print;
结果:
E:\perl>perl p.pl
9876543210
================================
8、sort *** 作符 功能:根据内部的字符编码的顺序,对它们进行排序 返回值:返回排序后列表,不会修改传进来的参数。 注意:该函数将数字当成字符串来排序 ascii排序: 1)大写字符排在小写字符前面 2)数字排在字母前面 3)标点符号散落在各处
总结以上是内存溢出为你收集整理的perl语言入门之第三天全部内容,希望文章能够帮你解决perl语言入门之第三天所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)