2. 函数的参数和返回值
2.1.基本用法
Perl中函数所有的参数作为一个标量列表传入,如果想函数传入数组或者散列,那么传入的数组或者散列的每个元素都会被放入这个标量列表中,在函数内部可以使用数组@_来获取传入的这些参数。注意,@_是一个本地变量,它的每一个元素都是实际参数的一个引用,所以,如果修改实际参数对应的@_中的元素就会修改实际参数,这种情况又一个例外,那就是散列。当传入一个散列作为参数时,散列的键是不会改变的,只能修改散列的值。
我们做如下的测试脚本:
=pod
脚本名称:04_input_params.pl
脚本目的:该脚本用来测试函数参数数组@_的语法
作 者:加水石灰
=cut
sub test_input_params{
print "@_\n";
$_[1]="Unkown";
$_[0]="Unkown";
}
my@params=("Linux","Perl","Oracle");
my%params=(OS=>"Linux",LANGUAGE=>"Perl",DATABASE=>"Oracle");
my $param1="Linux";
my $param2="Perl";
my $param3="Oracle";
test_input_params @params;
test_input_params %params;
test_input_params$param1,$param2,$param3;
test_input_params @params;
test_input_params %params;
test_input_params$param1,$param2,$param3
测试脚本的输出结果如下:
Linux PerlOracle
DATABASE OracleLANGUAGE Perl OS Linux
Linux PerlOracle
Unkown UnkownOracle
DATABASE UnkownLANGUAGE Perl OS Linux
Unkown UnkownOracle
从结果可以看出所有的传入参数都被解析成了列表,放入了@_数组当中。代码中修改@_数组的第一个值和第二个值为Unkown,第二次调用时除了散列的键之外所有的参数就已经发生改变。
如果没有显式的return语句,那么Perl函数的返回值就是函数体中最后一个表达式的值。不管是显式的调用return,还是隐式返回最后一个表达式的值,其执行环境都依赖于外部的该函数被调用的环境。
我们做测试脚本如下:
=pod
脚本名称:05_return_values.pl
脚本目的:该脚本用来测试函数返回值数组
作 者:加水石灰
=cut
sub test_return_values{
my@params=("Linux","Perl","Oracle");
my%params=(OS=>"Linux",LANGUAGE=>"Perl",DATAB