2007年4月27日星期五

《Learning Perl》学习笔记 -- 第四章 子例程

本章讲述了子例程(subroutine)的概念,介绍了子例程的定义、调用格式、参数、返回值等。

1.子例程的概念

子例程和其它编程语言中函数的概念类似,唯一的区别是Perl中的子例程总是用户定义的,而函数可能包括系统自带的内置函数。

和标量、数组类似,子例程也有单独的命名空间,该命名空间以与字符("&")标识。

2.定义及调用格式

用关键字sub和子例程的名字定义一个子例程,如下所示:

sub max {

...

}

调用的时候,去掉sub,在子例程名字前面加"&",如下所示:

$max_num = &max($a, $b);

3. 参数和返回值

传递给子例程的参数,会自动保存在子例程内的一个默认变量@_中,这是一个数组变量,对其中的元素进行访问的方式为$_[i], i=0,1,...

譬如:

sub max {

if ($_[0] > $_[1]) {

$_[0];

} else {

$_[1];

}

}

默认情况下,在子例程中得到的最后一个计算值自动成为返回值,即不需要明确的return语句。

当然,使用return语句可以立即从子例程中返回一个值,并不再执行子例程的其余部分。

4. 私有变量及严格的编码规范

使用my关键字定义的变量为私有变量,其作用范围为最小的代码块。用法如下:

my $a; #定义了一个私有标量

my ($a, $b); #定义了一个私有列表

为了告诉Perl执行严格的语法规则检查,可以把use strict pragma放在程序顶部(或在任何你希望强制使用这些规则的块或文件中)

use strict; #强制使用一些好的编程规则

5.其它

忘记local,我们用不到这个东西:P

在调用子例程时,总是使用与字符(&),这是安全和保险的。

1 条评论:

匿名 说...

谢谢楼主的文档,很适合perl的新手啊,