Perl CH11 子例程与函数笔记

格式:

**subroutine declaration:**
    sub subroutine_name;
**subroutine definition:**
    sub subroutine_name{block}
**subroutine call:**
    do suroutine_name;
    &subroutine_name;
    subroutine_name();
    subroutine_name;
**subroutine call with parameters:**
    &subroutine_name(parameter1, parameter2, ...)
    subroutine_name(parameter1, parameter2, ...)

声明: sub 子例程名;
定义: sub 子例程名{语句; 语句;}

local函数:
local函数能从参数列表中创建局部变量。如果局部变量和全局变量重名的话,程序将临时创建一个新的局部变量来暂存全局变量的值。当局部变量超出其作用域时,全局变量将再一次可见,并恢复其原有值。

my运算符:
my 运算符用在词法上打开按值调用模式。my声明得到的变量在从声明之处开始到最内层包含的块中都是可见的。使用my运算符声明的变量将创建在特殊缓冲区中,该缓冲区将专用于创建它的代码块。

local 与 my 的区别:
my 函数声明得到的所有变量都值在声明它的子例程中可见,对该子例程调用的任何其他子例程都是不可见的。而local函数在该子例程调用的其他子例程是可见的。

#!/usr/bin/perl
$friend = "Louise";
$pal = "Danny";
print "$friend and $pal are global.\n";
sub guests{
    my $friend = "Pat";
    local $pal = "Chris";
    print "$friend and $pal are weclome guests.\n";
    &who_is_it;
}

sub who_is_it{
    print "You still have your global friend, $friend, here.\n";
    print "But your pal is now $pal.\n";
}

&guests;
print "Global friends are back: $friend and $pal.\n";

output:

Louise and Danny are global.
Pat and Chris are weclome guests.
You still have your global friend, Louise, here.
But your pal is now Chris.
Global friends are back: Louise and Danny.

原型(Prototype):
原型(Prototype)负责在调用子例程时告诉编译器应当读取多少个参数,以及相应参数类型。作为声明的一部分,原型将在程序编译阶段进行处理。如要调用使用原型声明的子例程,则必须省略&符号,否则程序会将该子例程当做用户自定义的子例程来处理,而不是内建子例程处理,同时编译器将忽略子例程原型

wantarray函数:
内建的wantarray函数可判断子例程的返回值类型是列表还是标量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值