perllearng

上传人:第*** 文档编号:65421324 上传时间:2018-12-31 格式:PDF 页数:17 大小:277.91KB
返回 下载 相关 举报
perllearng_第1页
第1页 / 共17页
perllearng_第2页
第2页 / 共17页
perllearng_第3页
第3页 / 共17页
perllearng_第4页
第4页 / 共17页
perllearng_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《perllearng》由会员分享,可在线阅读,更多相关《perllearng(17页珍藏版)》请在金锄头文库上搜索。

1、Perl 语言入门学习笔记语言入门学习笔记 Intermediate Perl继续深入继续深入 小骆驼书小骆驼书Learning Perl Perl 语言入门语言入门 大骆驼书大骆驼书Programming Perl Perl 语言编程语言编程 习题参考习题参考Learning Perl Student Workbook 第一章简介第一章简介 Perl 这个词是什么意思?这个词是什么意思? Perl 是实用摘录与报表语言(Practical Extraction and Report Language)的缩写。一般来 说,大写 P 表示的“Perl”表示编程语言,小写 p 表示的“perl”表

2、示实际编译并运行程序 的解释器。 为什么有为什么有 Perl? Perl 是由 Larry 创造的。创造 Perl 是为了想偷懒。他需要的是像 shell 或 awk 一样能够 快速编程,又具有类似 grep,cut,sort 和 sed 的高级功能,而不必回头使用像 C 这种类型的语 言。 Perl 的四个特性:的四个特性: 首先,Perl 很容易。这是指 Perl 容易使用,而不是说 Perl 容易学习。 Perl 几乎不受限制,几乎没什么事是 Perl 办不到的。可以用来写设备驱动程序、小程序 和企业级大型应用程序。 Perl 的速度通常很快。 Perl 有点丑陋。 哪些事情最适合哪些事

3、情最适合 Perl 来做?来做? Perl 擅长处理整体来说“约有 90%与文字处理有关, 10%与其他事务有关” 的问题。 Perl 也是小型 CGI 脚本的最佳搭档语言。 Hello, world #!/usr/bin/perl print “Hello, world!n”; 然后,给文件加上可执行属性 chmod a+x hello 运行 ./hello 程序里写的是什么?程序里写的是什么? Perl 通常可以随意加上空白(空格、制表符与换行符等)使程序代码更易阅读。 Perl 里的注释是从井号(#)开始,到行尾结束的部分。 Perl 里没有以 main 命名的例程。 Perl 不需要变

4、量声明的部分。 第二章第二章 标题数据标题数据 Perl 用标量(scalar)来称呼单件事物。 数字数字 所有数字内部格式都相同所有数字内部格式都相同 总是按“双精度浮点数”的要求来保存并进行运算。也就是说 Perl 内部并不存在整数 值程序中用到的整型常量会被转换成等效的浮点数值。 浮点数直接量浮点数直接量 直接量是直接写在程序源代码里的数据。如: 1.25 255.000 -6.5e24 -1.2E-23 整数直接量整数直接量 如: 0 2001 -40 255 可以在整数直接量里插入下划线,将若干位数分开,61_298_040 非十进制的整数直接量非十进制的整数直接量 十六进制 0x

5、开头,二进制 0b,八进制以 0 开头。 如: 0377 0xFF 0b11111111 可以用下划线分开,如: 0x1377_0B77 数字操作符数字操作符 主要是加(+)、减(-)、乘(*)、除(/)、取模(%)。 字符串字符串 字符串可以由各种字符任意组合而成。 最短的字符串是不含任何字符的空字符串。 最长 的字符串是没有长度限制的,甚至填满内存。因为字符串能够包含任何字符,所以可用它来 对二进制数据进行创建、扫描和操作。 单引号内的字符串直接量单引号内的字符串直接量 除了单引号和反斜线字符外, 单引号内所有字符都代表它们自己。 要表示反斜线字符本 身,需要在这个反斜线字符前面再加一个反

6、斜线字符;要表示单引号本身时,同样在单引号 前加一个反斜线字符。 fred#总共 4 个字符:f、r、e 和 d barney #总共 6 个字符 hellon #后面接着反斜线和 n hello there#hello、换行符、there(总共 11 个字符) 单引号内的n 并不代表换行字符, 而是表示反斜线和 n 这两个字符。 只有在后面是另一 个反斜线或单引号时,前面的反斜线才有特殊的意义。 双引号内的字符串直接量双引号内的字符串直接量 反斜线字符拥有更强大、更完整的能力,可用来表示控制字符,或是用八进制或十六进 制写法来表示任何字符。 双引号内字符串的另一种特性称为变量内插, 这是指在

7、使用字符串时, 将字符串内的变 量名称替换成该变量当前的值。 字符串操作符字符串操作符 字符串可以用.操作符拼接起来。 “hello”.“world”#等同于”helloworld” 字符串重复操作符 x,会将其左边的操作数与它本身重复连接,重复次数则由右边的操 作数指定。 “fred” x 3#得”fredfredfred” 复制次数在使用前会取整。复制次数小于 1 时,会生成长度为零的空字符串。 数字与字符串之间的自动转换数字与字符串之间的自动转换 如何转换?取决于操作符需要什么类型的操作数。如果操作符(像是+)需要的是数字, Perl 就会将操作数视为数字;在操作符(像是.)需要字符串时

8、,Perl 便会将操作数视为字符 串。因此,你不必担心数字和字符串间的差异,只管合理使用操作符,Perl 会自动完成剩下 的工作。 “12”*“3”的结果会是 36。 字符串中非数字的部分会被略过。 “12fred34” * “3” 也会得到 36 Perl 内建警告信息内建警告信息 在发现程序有些不对劲的时候,你可以让 Perl 发出警告。要启用警告功能,请在命令 行运行程序时使用-w 选项: perl w my_program 或者,如果想要每次运行都启用警告功能,可使用#!行来指明: #!/usr/bin/perl w 如果看不懂警告信息,可以利用 diagnostics 这个编译命令看

9、详细的问题描述。 标量变量标量变量 标量变量存储的是标量值。标量变量的名称是以美元符号($)开头,后面接着所谓的 Perl 标识符:一个字母或下划线为首,后面可以跟上多个字母、数字或下划线。你也可以把 它想成由一个以上的字母、数字或下划线构成,但是开头不能是数字。另外,大写和小写的 字母是被区分。 标量的赋值标量的赋值 用=号赋值。 双目赋值操作符双目赋值操作符 +=,.=,*=(乘幂操作符) 用用 print 输出结果输出结果 可以用 print 输出一系列用逗号隔开的值: print “The answer is “,6*7,”.n”; 字符串中的标量变量内插字符串中的标量变量内插 字符串

10、内的所有标量变量名,都会被替换为该变量当前的值。 $meal=”steak”; $barney=”fred ate a $meal”; #相当于”fred ate a steak”; 字符串0是唯一被当成假的非空字符串。 Perl 里面我们可以用一对花括号将变量名围起来,以避免歧义。 $name=liuyaoxing; print “$names”; 操作符的优先级与结合性操作符的优先级与结合性 结合性操作符 左括号;给定参数的列表操作符 左- + -(自增;自减) 右* 右 ! + - 左= ! 左* / % x 左+ - .(双目操作符) 左 具名的单目操作符(-X 文件测试:rand)

11、= lt le gt ge = != eq ne cmp 左 超出数组的尾端,则对应的值将会是 undef。 特殊的数组索引值特殊的数组索引值 假如你对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大。 数组的最后一个索引值是$#array,这个数字比数组元素的个数少 1。 负数数组索引值,假如你在数组中有 3 个元素,则有效的负数索引值为-1(最后一个元 素) 、-2(中间的元素)以及-3(第一个元素) 。 列表直接量列表直接量 程序中需要引入列表的时候可以写成数组的样子, 也就是在圆括号中用逗号隔开的一系 列值。这些值构成了列表中的元素。举例来说: (1,2,3)#包含 1、2、

12、3 这三个数字的列表 (1,2,3,)#相同的三个数字 (“fred”,4.5)#两个元素, “fred”和 4.5 ()#空列表:零个元素 (1100)#100 个整数构成的列表 范围操作符()该操作符会从左边的数字计数到右边,每次加 1,以产生一连串的数字。 举例来说: (15)#(1,2,3,4,5) (1.75.7)#两个数都会被去掉小数部分 (51)#空列表:仅向上计数 (0,26,10,12) #与(0,2,3,4,5,6,10,12)相等 ($m$n)#范围由$m 和$n 当前的值来决定 qw 简写简写 用 qw 建立简单的单词列表,不必键入许多索然无味的引号: qw( fred

13、 barney betty wilma dino) Perl 会将其当成单引号内的字符串来处理, 不能像双引号内的字符串一样使用n 或 $fred。空白字符(如空格、制表符以及换行符)会被抛弃,然后剩下的就是列表的元素。 因为 qw 算是一种引号,所以不能将注释放在 qw 列表中。 qw 还可以用任何标点符号作为定界符: qw! fred barney betty wilma dino ! qw/ fred barney betty wilma dino / qw# fred barney betty wilma dino # qw( fred barney betty wilma dino

14、) qw fred barney betty wilma dino qw fred barney betty wilma dino qw 上面后 4 行定界符是成对的,如果用其他符号,起始和结尾的定界符则必须相同。 如需要在被圈引的字符串内使用定界符,那说明你可能是挑错了定界符。不过,可以通 过反斜线转义引入这个字符。 列表的赋值列表的赋值 像标量值可被赋值给变量一样,列表值也可以赋值到变量: ($fred,$barney,$dino)=(“flintstone”,”rubble”,undef); ($fred,$barney)=($barney,$fred);/互换两者的值 如果变量的个数不

15、等于给定的列表值的个数时,会发生什么情况呢?对列表进行赋值 时,多出来的值会被悄悄忽略掉。另一种情况,如果变量的个数多过给定的列表值,那么那 些多出来的变量将会被设成 undef。 对数组赋值可在数组名之前加上(at)字符就可以。 rocks=qw/bedrock slate lava /; tiny=(); giant=11e5; stuff=(giant,undef,giant); $dino=”granite”; quarry=(rocks,”crushed rock”,tiny,$dino); 复制数组 copy=quarry; pop 和和 push 操作符操作符 pop 操作符可用

16、来取出数组中最后一个元素, 同时返回该元素值; 如果数组为空的, pop 什么也不做,直接返回 undef。 array=59; $fred=pop(array); $barney=pop array; pop array; push 操作符,用于添加一个元素(或是一串元素)到数组的尾端: push(array,0) push array,8; push array, 110; others=qw /9 0 2 1 0/; push array, others; 注意:push 和 pop 操作的都是数组,对列表直接量进行压入和弹出操作是不可能的。 shift 和和 unshift 操作符操作符 push 和 pop 操作符处理的是数组的尾端;相似地,unshift 和 shift 操作符则是对数组的 “开关”进行相应的处理。 字符串中的数组内插字符串中的数组内插 和标量一样,数组的内容同样可以被内插到双引号串

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号