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/ ,如需转载,请注明出处,否则将追究法律责任。