设为首页 收藏本站
查看: 1032|回复: 0

[经验分享] Perl学习笔记 Learning Perl Chapter III

[复制链接]

尚未签到

发表于 2015-12-27 18:18:26 | 显示全部楼层 |阅读模式
  第三章 Perl中的plural类型—list表和array数组,list是一系列scalar元素的有序集,而array是保存list的那个变量。要点:
1.Accessing Elements of an Array 访问数组元素
array的下标可以是表达式,如:$name[$index+1]=1;可以不是整数,但自动截取整数部分:$name[9.878]~$name[9].
2.Special Array Indices 特殊下标
Perl不对数组长度加以限制,无下标越界之说,如,若只定义$name[0], $name[19]则中间的$name[1]~$name[18]为undef.
数组最后一个元素的下标可通过$#name获得,最后一个元素$name[$#name],数组总长度即为$#name+1.
负数下标:数组最后一个元素下标为-1,其余元素下标从尾到头递减,含三个元素的数组其三个元素下标依次为:-3,-2,-1.
使用负下标是不能“越界”的.
3.List Literal 表的表示
List为圆括号里的一串数据,不一定类型相同,可为空,如:(1,2,3),("shit",8,'what'),().
数据为整型时,一种常用的简捷定义方式:
(1..100)~(1,2,3,4,...,100);
(4.978..12.97867)~(4,5,6,7,...,12);
(1,2,3..7,8)~(1,2,3,4,5,6,7,8);
($start+21..$end);
注意必须为升序,否则为空:
(58..1)~().
4.The qw Shortcut qw简捷定义
qw=quoted words,可以用来把一串(单引号)字符串自动转换成数组,忽略字符串之间的换行,tab和其他多余空白符.
用法:qw(string),qw#string#,qw{string},qw[string],qw<string>.
必要的话可以把用转义符号用\转义。
5.List Assignment 表的赋值
赋值开始之前表就建立好了,所以可以直接用list来交换变量的值,如:($first,$second)=($second,$first).
还可以用list一次性给几个变量赋值 :($first,$second,$third)=($whatever,197,"ohh").
用@定义一个数组,@array1=(1..2),然后就可以用$array[index]使用他的元素了.
给数组赋值的时候可以赋空,scalar,undef数组,或者他们的混合:@array2=(@array1,$whateve,undef,32..145).
6.pop/push shift/unshift 数组的类栈使用
pop/push和shift/unshift分别把数组的尾和头作为栈顶进行栈操作.
$last=pop @array3
push @array,23
push @array4,@array5
$first=shift @array3
unshift @array6,23
unshift @array5,array6
7.The foreach Control Structure foreach控制结构
类似java.
foreach $name (list/@arrayname){do something}
缺省控制变量$_
foreach (list/@arrayname){print $_;}
8.The reverse&sort Operator 逆置&排序操作
reverse把一个数组逆置,但是不改变原数组:
@reversed=reverse list/@arrayname;
@reversemyself= reverse @reversemyself;
sort按ASCII把数组排序,同样不改变原数组:
@sorted=sort list/@arrayname;
@sortmyself=sort @sortmyself;
9.Scalar and List Context 单数变量和表上下文
就是说根据上下文判断什么时候是单数变量的操作什么时候是表的操作
1) Using List-Producing Expression in Scalar Context 单数变量上下文中使用返回list值的表达式
sort在scalar上下文中总是返回undef:
$scalar=sort @arrayname  #scalar 值为undef;
reverse在scalar上下文中返回一个string:
$scalar=reverse qw/what the fuck/    #scalar 值为fuckthewhat;
其他情况比较多,使用时自己多体会吧
2) Using Scalar-Producing Expression in List Context 表的上下文中使用返回scalar值的表达式
这个比较容易判断,同样自己体会
3)Forcing Scalar Context 强制使用scalar上下文
一个例子说明一切:
@array=qw/what the fuck/;
print"there is",scalar @array,"elements in the array!\n"; #不加scalar的则会输出@array里的全部元素.
10.<STDIN> in List Context  list上下文中的标准输入
@lines=<STDIN>; #每一行连同换行符当做@lines的一个元素
chomp(@lines=<STDIN>); #消除换行符的版本

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157165-1-1.html 上篇帖子: perl semctl()函数 下篇帖子: perl学习之数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表