Perl 语言学习笔记 (二)

这一部分主要是数组和列表部分。首先建议一种使用utf8编码的简便写法(因为Perl只能处理ASCII编码以及utf8编码,所以了解utf-8的详细用法是必须的): use utf8;binmode(STDIN, ':encoding(utf8)');binmode(STDOUT, ':encoding(utf8)');binmode(STDERR, ':encoding(utf8)');
摘要由CSDN通过智能技术生成
这一部分主要是数组和列表部分。首先建议一种使用utf8编码的简便写法(因为Perl只能处理ASCII编码以及utf8编码,所以了解utf-8的详细用法是必须的): 
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
这一部分写在脚本开头即可,表示utf8-flag为on的状态(对于Perl中utf8使用的更详细解释,请参看博文http://hi.baidu.com/acquiesce/item/4bd0a0f674d47815ce9f32ca)。没有必要对输入、输出以及错误报告都使用utf8编码模式,视程序的具体情况使用相应的代码就可以,在程序中写太多的无意义的代码是一件非常糟糕的事情。
废话讲完,开始更新笔记。
--------------------------------------------------------------
1. 列表指的是数据,数组指的是变量。列表的值不一定要放在数组里,但每个数组变量都一定包含一个列表(即便是不含任何元素的空列表)。
2. 数组元素的索引是从0开始递增,每次加1。不过,需要注意的是,Perl中的数组元素索引还允许使用负数(但是负数有特殊意义,与一般的正数索引值不同,见下文)。唯一的要求是,索引数字必须是整数(小数也不会报错,而是自动取整)。如果下标超过数组的范围,则对应的值是undef。数组和列表可以不包含任何元素,也可以包含任意多个元素(只要内存足够。这句话其实不够严谨,事实上最大的数组索引是有符号整数的最大取值,但是实际中不可能用到这么大的数字)。
3. 数组的名字空间与标量的名字空间是完全分开的,比如$fred[2]与$fred没有任何关系,这两个名称可以同时出现在同一段代码中。
对超出原数组尾端的新元素进行赋值,数组会根据需要自动扩大。譬如,原数组是$array[3],现在给$array[90]赋值,则数组会自动扩充到$array[90],这其中未明确赋值的元素均为undef。自动扩充只适用于正数索引值。
4. 数组$array的最后一个元素的索引值可以表示为$#array,这种写法与C Shell的表达相同,需要注意的是因为索引的开始值是0所以$#array这个数字比数组元素个数少1。另外一种方法是使用负数索引值来表示从原数组的末尾到开头的倒序读取,比如$array[-1]就表示$array数组的最后一个元素,$array[-2]表示倒数第二个元素。如果负数索引值超出了原数组的长度,则返回的值是undef。推荐使用负数索引值而不是$#array。负数索引值只有倒序读写已有数组元素的功能,不具有自动扩充数组范围的作用,这一点与正数索引值不同。
5. 列表直接量可以由圆括号内用逗号隔开的一串数据表示,这些数据被称为列表元素。例如("fred", 4.5)含有两个列表元素。如果要表示1到100之间的所有数字,可以使用(1..100)这种写法,两个连续的点号是范围操作符,表示从左边的数字每次增加1直到右边的所有数字,左右两个数字均为整数(小数会自动取整)。需要注意的是,这种形式是单方向的,左边数字必须小于右边数字,否则结果会是空列表。
6. 如果要建立一个字符串列表,那么使用qw简写可以省去键入很多引号的麻烦。例如,("fred", "barney", "betty", "wilma", "dino")等价于qw(fred barney betty wilma dino)。需要注意的是,qw()构建的列表中,字符串都被当做单引号内的字符串来处理,所以变量以及大多数转义都不适用,空白符(如空格、制表符以及换行符)会被抛弃。Perl允许的定界符很多,除了各种括号(包括<...>)之外,甚至一前一后相同的两个标点(比如!....!。但是括号必须是左右一对,不能都用左边或者都用右边)也可以用作定界符(也就是说qw!...!也是可以的)。如果当前作为定界符的标点出现在了某个元素中,那么需要更换其他定界符或者对元素中的标点换用转义表达,比如qw!go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值