perl入门程序

上传人:油条 文档编号:12503283 上传时间:2017-10-19 格式:DOC 页数:7 大小:68KB
返回 下载 相关 举报
perl入门程序_第1页
第1页 / 共7页
perl入门程序_第2页
第2页 / 共7页
perl入门程序_第3页
第3页 / 共7页
perl入门程序_第4页
第4页 / 共7页
perl入门程序_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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

1、perl 入门程序Perl 是一种容易学习和使用的语言。1.第一个程序示例:print Hollo, World!n; # perl的输出类 C 同类还有 printf-格式输出,sprintf-格式预输出phrase = Howdy, world!n; print $phrase; 请注意,在 Perl 中我们不必事先定义 $phrase 是什么类型的变量,$ 符号告诉 Perl, phrase 是一个标量,也就是包含单个数值的变量。与此对应的数组变量使用 开头。(可以将 $ 理解成代表 s 或 scalar(标量),而 表示 a 或 array (数组)来帮助你记忆。)2.perl的数据种

2、类:Perl 还有象“散列”(又名“哈希结构”或“hash”,或称“关联数组”),“句柄”(或称“资源符”),“类型团”(或称“指针”)等其他一些变量类型,与标量和数组一样,这些变量类型也是前导趣味字符,下面是你将会碰到的所有趣味字符: 类型 字符 例子 用于哪种名字 标量 $ $cents 一个独立的数值(数字或字串) 数组 large 一列数值,用编号做键字 散列 % %interest 一组数值,用字串做键字 子过程 & &how 一段可以调用的 Perl 代码 类型团 * *struck 所有叫 struck 的东西 3.关于数组的解释:将食物中的水果列出,列表如下:$foodfrui

3、t = (apple, peach, banana, pear); # 错很不幸,代码并不能象你希望的那样运转,因为在 Perl 中括弧和逗号还不够强大,还不能将一个列表转换成为标量(在语法中,圆括弧用于分组,逗号用于分隔)。你需要明确地告诉 Perl 你想将一个列表当成一个标量。 中括弧能够实现这个转换: $foodfruit = apple, peach, banana, pear; # 正确 4.简单数据结构:Perl 也有一些主题化的方法,最主要的就是使用 package 声明。例如你想在 Perl中讨论 Camels,你会在 Camel 模块中以下面的方法开头: package Ca

4、mel;计算机科学家称之为一个 package 建立了一个名字空间,或称“命名空间”,基于OOP(面向对象编程)的设计方法。use Camel; # 使用 Camel包$fido = new Camel Amelia; # 实例化 Camel包5.一个平均值例子: 假如你在一个班中教授 Perl 语言,并且你正在想如何给你的学生评分的方法。你有全班所有人每次考试的成绩,它们是随机的顺序,你可能需要一个所有同学的等级列表,加上他们的平均分。你有一份象下面一样的文本文件(假设名字为 grades): Noël 25Ben 76Clementine 49Norm 66Chris 92Dou

5、g 42Carol 25Ben 12Clementine 0Norm 66.你可以用下面所示的脚本将所有的成绩收集在一起,同时计算出每个学生的平均分数,并将它们按照字母顺序打印出来。这个程序天真地假设在你的班级中没有重名的学生,比如没有两个名为 Carol 的学生。如果班级中有两个 Carol,文件中所有以 Carol 开头的条目,程序都会认为这是第一个 Carol 的成绩(但是不会跟 Noel 的成绩混淆)。 顺便说一句,下面程序里的行号并不是程序的一部分,任何与 BASIC 类似的东西都是站不住脚的。 1 #!/usr/bin/perl 2 3 open(GRADES, grades) o

6、r die Cant open grades: $!n; 4 while ($line = ) 5 ($student, $grade) = split( , $line); 6 $grades$student .= $grade . ; 7 8 9 foreach $student (sort keys %grades) 10 $scores = 0;11 $total = 0; 12 grades = split( , $grades$student);13 foreach $grade (grades) 14 $total += $grade;15 $scores+;16 17 $ave

7、rage = $total / $scores;18 print $student: $grades$studenttAverage: $averagen;19 6.文件处理:你可以用 open 函数创建用于不同用途(输入,输出,管道)的文件句柄,因此你必须指定你需要哪种类型。 象在命令行中一样,你只需简单地在文件名中加入特定的字符。 open(SESAME, filename) # 从现存文件中读取open(SESAME, filename) # 创建文件并写入open(SESAME, filename) # 附加在现存文件后面open(SESAME, | output-pipe-comma

8、nd) # 设置一个输出过滤器open(SESAME, input-pipe-command |) # 设置一个输入过滤器7.操作符7.1 双目算术操作符算术操作符和我们在学校中学到的没有什么区别。它们对数字执行一些数学运算。比如: 例子 名字 结果 $a + $b 加法 将 $a 和 $b 相加 $a * $b 乘法 $a 和 $b 的积 $a % $b 模 $a 被 $b 除的余数 $a * $b 幂 取 $a 的 $b 次幂 7.2字符串操作符 Perl 中有一个“加号”来串联(将字符串连接起来)字符串。与其它语言不一样,Perl 定义了一个分隔操作符 (.) 来完成字符串的串联,这样就

9、不会跟数字的加号相混淆。 $a = 123; $b = 456; print $a + $b; # 打印 579 print $a . $b; # 打印 123456同样,字符串中也有“乘号”,叫做“重复”操作符。类似的,采用分隔操作符(x)同数字乘法相区别: $a = 123; $b = 3; print $a * $b; # 打印 369 print $a x $b; # 打印 1231231237.3 赋值操作符 我们已经多次使用了简单的赋值操作符 =,虽然准确地说它不是一个数学操作符。你可以将 = 理解为“设为”而不是“等于”(数学等于操作符 = 才表示等于,如果你现在就开始理解它们的

10、不同之处,你将会省掉日后的许多烦恼。= 操作符相当于一个返回布尔值的函数,而 = 则相当与一个用于修改变量值的过程)。 根据我们在前面已经提到过操作符的分类,赋值操作符属于双目中缀操作符,这就是意味它们在操作符的两边都有一个操作数。操作符的右边可以是任何表达式,而左边的操作数则必须是一个有效的存储空间(也就是一个有效的存储空间,比如一个变量或者是数组中的一个位置)。最普通的赋值操作符就是简单赋值,它计算右边表达式的值,然后将左边的变量设置成这个值: $a = $b; $a = $b + 5; $a = $a * 3;7.4 单目算术操作符如果你觉得 $variable += 1 还是不够精简,

11、同 c 一样,Perl 有一个更短的方法自增变量。使用自增(自减)操作符可以将变量的值简单地加上(减去)一。你可以将操作符放在变量的任何一边,这取决于你希望操作符什么时候被执行: 例子 名字 结果 +$a, $a+ 自增 向 $a 加一 -$a, $a- 自减 从 $a 中减一如果你将自增(减)操作符放在变量的前边,变量就成为“预增”变量。变量的值在它被引用前改变。如果放在变量的后边,被称为“后增变量”,它在被引用后改变。如: $a = 5; # 给 $a 赋予 5 $b = +$a; # $b 被赋予 $a 自增之后的值为 6 $c = $a-;# $c 被赋予 6,然后 $a 自减为 57

12、.5 逻辑操作符 逻辑操作符,也称为“短路”操作符,允许程序不使用嵌套 if 语句,而根据多个条件来决定执行流程。他们之所以被称为“短路”操作符,是因为当认为左边的参数能够提供足够的信息来决定整个值的时候,它们跳过(短路)执行右边的参数。这不仅仅是为了效率。你可以依靠这种“短路”的特性来避免执行为左边代码做防护的右边的代码。比如你可以说“California or bust!”,在 Perl 中将不会有 bust(假设你已经到达 California)。 实际上 Perl 有两组逻辑操作符,一组传统操作符是借鉴了 C 中的操作符,另外一组比较新(或者更旧的)低级操作符借鉴了 BASIC 中的操

13、作符。两组操作符在使用适当的情况下都很易读。如果你希望逻辑操作符比逗号优先级更高,那么 c 的符号操作符运转得很好,而如果你希望逻辑操作符比逗号优先级更低时,BASIC 的基于词的操作符比较适合。在很多情况下,它们得到相同的结果。使用哪一组你可以根据你自己的喜好来选择。(你可以在第三章中的“逻辑与,或,非和异或”小节找到对比例子)。虽然由于优先级不同,这两组操作符不能互换,但是一旦它们已经被解析,操作符的效果是一样的,优先级只能在它们参数的范围内起作用。表 1-1 列出了逻辑操作符。 表 1-1 逻辑操作符 例子 名字 结果 $a & $b 与 如果 $a 为假则为 $a,否则为 $b $a

14、| $b 或 如果 $a 为真则为 $a,否则为 $b ! $a 非 如果 $a 为假则为真$a and $b 与 如果 $a 为假则为 $a,否则为 $b $a or $b 或 如果 $a 为真则为 $a,否则为 $b not $a 非 如果 $a 为假则为真 $a xor $b 异或 如果 $a 或 $b 为真,但不能同时为真 下面的代码(平均分数例子中的第 4 行)试图打开文件 grades: open(GRADES, grades) or die Cant open file grades: $!en; 如果成功打开了文件,将跳到下一行继续执行,如果不能打开文件,程序将打印一个错误信息

15、并停止执行 $! 变量包含了操作系统返回的错误信息7.6 比较操作符 比较操作符告诉我们两个标量值(数字或字符串)之间的比较关系假设两个参数是 $a 和 $b,我们可以: 比较 数字 字串 返回值 等于 = eq 如果 $a 等于 $b 返回真 不等于 = ne 如果 $a 不等于 $b 返回真 小于 gt 如果 $a 大于 $b 返回真 小于或等于 le 如果 $a 不大于 $b 返回真 比较 cmp 相等时为 0,如果 $a 大为 1 如果 $b 大为 -1 最后一对操作符( 和 cmp)完全是多余的,但是在 sort 函数中,它们非常有用7.7 文件测试操作符 下面是一些文件测试操作符: 例子 名字 结果 -e $a 存在 如果在 $a 中命名的文件存在则为真 -r $a 可读 如果在 $a 中命名的文件可读则为真 -w $a 可写 如果在 $a 中命名的文件可写则为真 -d $a 目录 如果在 $a 中命名的文件是目录则为真 -f $a 文件 如果在 $a 中命名的文件是普通文件则为真 -T $a 文本文件 如果在 $a 中命名的文件是文本文件则为真 你可以象下面例子中一样使用它们

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

当前位置:首页 > 行业资料 > 其它行业文档

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