第四章 子程序和返回值

[root@jhoa 2015]# cat 1.pl 
sub marine {
$n = $n + 1;
print "$n is $n
";
}

marine;
marine;
marine;
marine;
marine;
marine;
[root@jhoa 2015]# perl 1.pl 
$n is 1
$n is 2
$n is 3
$n is 4
$n is 5
$n is 6

返回值:

sub sum_of_fred_and_barney {
$fred + $barney; ###这就是子程序的返回值
}

子程序的返回值 是最后一次运算的结果 (不管是什么)

[root@jhoa 2015]# cat 2.pl 
sub max {
my ($m,$n); #该语句块中的新私有变量

($m,$n) = @_; #将参数赋值给变量

if ($m > $n) {print "$m
"} else {print "$n
"}
}

max (1,2)



sub max {
my ($m,$n); #该语句块中的新私有变量
if (@_ != 2){print "请输入2个参数
";
exit }
($m,$n) = @_; #将参数赋值给变量

if ($m > $n) {print "$m
"} else {print "$n
"}
}

max (1,10,1,2,3,4)

[root@jhoa 2015]# cat 3.pl 
use strict;
$var += 1;
print "$var is $var
";
[root@jhoa 2015]# perl 3.pl 
Global symbol "$var" requires explicit package name at 3.pl line 2.
Global symbol "$var" requires explicit package name at 3.pl line 3.
Execution of 3.pl aborted due to compilation errors.


[root@jhoa 2015]# cat 3.pl 
use strict;
my $var += 1;
print "$var is $var
";
[root@jhoa 2015]# perl 3.pl 
$var is 1


子程序返回值:

my @names = qw/fred barney betty dino wilma pebbles bamm-bamm/;
#子程序的返回值

my $result = &which_element_is("dino",@names);

sub which_element_is {
my ($what ,@array) = @_;

foreach (0..$#array) { #数组 @array 中所有元素的下标

if ($what eq $array[$_]){
 return $_;          ##一发现就提前返回
     }
}
-1;
}

print "子程序的返回值是 $result
";


[root@jhoa 2015]# cat a1.pl 
my @names = qw/fred barney betty dino wilma pebbles bamm-bamm/;
#子程序的返回值

my $result = &which_element_is("xxxx",@names);

sub which_element_is {
my ($what ,@array) = @_;

foreach (0..$#array) { #数组 @array 中所有元素的下标

if ($what eq $array[$_]){
 return $_;          ##一发现就提前返回
     }
}
return -1;
}

print "子程序的返回值是 $result
";
[root@jhoa 2015]# perl a1.pl 
子程序的返回值是 -1
























原文地址:https://www.cnblogs.com/hzcya1995/p/13351855.html