《Perl语言入门》读书笔记(四)子程序

1 子程序

1.1 定义子程序 

使用关键字sub开头,在写上子程序名(字母、数字和下划线组成,不能以数字开头),大括号框柱子程序主体。子程序可以定义在文件的任意位置,为了方便代码阅读,一般建议放在开头或结尾处。

sub marine{
    $n += 1; #全局变量
    print"Hello,sailor number $n!\n";
}

1.2 调用子程序

在任意表达式中,子程序名前加与号(&),表示调用这个子程序。

&marine; #调用前面的子函数

1.3 返回值

子程序在被调用时一定是作为表达式的一部分,并且在perl中所有的子程序都有返回值,larry将子程序执行的最后一次运算的结果,自动作为返回值

sub sum_add{
print"The value is:";
$num1 + $num2;   #此结果为返回值
# print“($num1 + $num2)”;  此表达式做最后一次运算结果返回值为1,只会判断是否有输出信息
} 

#对返回值需要小心确认

1.4 参数

perl支持参数传递,在子程序调用的后面加上括号,并括号内写入列表表达式,比如:

$s = &max(10,17);

1.5 子程序中的私有变量

可以通过my操作符来创建私有变量,私有变量的作用域仅仅局限于封闭语句块中,语句块内的私有变量与外部变量互相不影响。my操作符声明的词法变量可以用在任意语句块中,仅作用于当前语句块。

sub max{
    my($m,$n);       #新建私有变量
    ($m,$n) = @_;    #参数赋值给变量
    if($m>$n) {$m}
    else{$n}
}

1.6 use strict 编译指令

编译指令,是提供给编译器的某些指示,编译器将遵循你的指示处理接下来的代码。use strict是启用相对严格的编码风格的指令

建议使用在程序较长的情况下。

1.7 return操作符

return操作符将会终止子程序运行,并返回某个值。

1.8 非标量返回值

子程序的返回值不仅可以返回标量值,也可以返回列表值

sub ilst{
    if($num1<$num2){
        $num1..$num2;
    }
    else{
        reverse $num2..$num1;
    }    
}

$num1,num2;
@c = &list;   # 此处返回列表值

1.9 持久化私有变量

对于多次调用同一子程序的情况,子程序的私有变量,每次都会被初始化。若要保持子程序中的私有变量的值,需要使用state操作符,使私有变量在子程序中保留,不被初始化

use v5.10; #在5.10版本被引入

sum1(5,6);
sum2(1..3);
sum3(4);

sub sum_run{
    state $sum = 0;   # 定义当前子程序的私有变量,并保留该变量的值
    state @numbers;

    foreach my $number(@_){
        push @numbers,$number;
        $sum += $number; 
    }
}

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值