ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 4,子程序(笔记)

4,子程序(笔记)

原创 Linux操作系统 作者:tonykorn97 时间:2007-06-20 00:00:00 0 删除 编辑
1, 定义子例程
例子:
sub marine {
$n +=1; #全局变量$n
print "hello,sailor number $n! ";
}

2, 调用子程序
任何表达式中只有使用了子程序的名称(加上&符号),就会调用(invoke)子程序。
&marine;

3, 返回值
最后一次运算的结果不管是多少,都会被自动当成子程序的返回值。

4,参数
perl子程序还可以有参数(argument).要传递参数列表(argument list)到子程序里,只要在子程序调用的后面加上被括号括住的列表表达式

(list expression)就行了。做法如下所示:
$n = &max(10,15); #本子程序的调用包含了两个参数
参数列表将会被传入子程序,让子程兴随意使用。当前,需要有变量来存储这个列表,所以perl会自动将参数列表存储到名为@_的特殊数组

变量,所以这表示子程序的第一个参数存储于$_[0],第二个参数存储于$_[1].
sub max {
if ($_[0] > $_[1]) {
$_[0];
} else {
$_[1];
}
}

5, 子例程里的私有变量
使用my操作符来创建成为词法变量的私有变量:
sub max {
my ($m,$n); #此块中新的私有变量
($m,$n) = @_; #将参数赋值给具名变量
is ($m > $n ) {$m } else {$n}
}
my操作符也可以应用到括号内的变量列表,所以习惯上会将这个子程序中的前两行语句合并起来:
  my($m,$n) = @_;

6, 关于词法(my)变量
词法变量可使用在任何块内,而不仅限于子程序的块,它可以在if,while或foreach的块里使用。

7,use strict编译命令

8,return操作符
在子例程中,return操作符会立即返回某个值。

9,省略&符号
在调用子程序时何时可以省略&符号的规则。如果编译器在调用子例程之前看到了子程序的定义,或者perl可以分辨它是子程序调用的语法

,那么该子程序就可以像内置函数那样在调用时省略&符号。

例如:
只要将参数列表放进括号内,它就一定是函数调用
如果perl的内部编译器已经见过子程序的定义,那么&符号通常也可以省略。这种情况下,甚至可以去掉参数列表两边的括号;

10,返回非标量值
子程序不仅可以返回标量值,只要在列表上下文中调用它,它就可以返回列表值。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/312079/viewspace-245688/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-05

  • 博文量
    1854
  • 访问量
    2088833