|
要定义自己的子程序,使用关键字sub,子程序的名字(无&这个符号),组成子程序的缩进的代码块(花括号中),如:
◆恰当的说,花括号也属于块的一部分。Perl 不需要缩进块中的代码,但维护人员需要。因此请遵守这个规则。
sub marine {
$n + = 1; #全局变量$n
print “Hello, sailor number $n!\n”;
}
子程序(本章中若无特殊说明,子程序均指subroutine,译者注)的定义可以在程序的任意位置,但具有如C 或者Pascal 背景
的程序员通常将它们放在程序的开头。某些其它的程序员可能将它们放在结尾,以使程序的主要部分在开头出现。不需要
在定义之前有任何声明。子程序的定义是全局的;没有某些强大的技巧,Perl 中没有私有子程序(private subroutines)◆。如
果两个子程序有相同的名字,那后一个将覆盖前一个◆。这被看作是一种不好的编成习惯,它将迷惑你的维护人员。
◆如果想使用特殊的技巧,阅读Perl 的关于私有变量(private variables)中的coderefs 文档。
◆将会引起警告
如前面例子那样,可以在子程序中使用全局变量。事实上,到现在为止所出现的所有变量均是全局的;也就是说,它们在
程序的任意部分都可以被访问。这让纯粹的语言学家感到恐慌,但一些Perl 的开发者却大量使用它们。在本章后面的“子
程序的私有变量”一节中将介绍怎样创建私有变量。 |
|