Perl初学笔记(三)——子程序

子程序的语法

sub<子程序名>{
<语句组>;
}

子程序的调用

用&调用;
用do调用;
先定义后调用,可以省略&符号;
前向引用,先定义子程序名,后面再定义子程序体

&getMinValue(14,50,37);  
# 等价于
# do getMinValue(14,50,37);

sub getMinValue{
($a,Sb,Sc) = @_;   #@_是函数传参时放置参数的数组,可以从中取实参
$min = $a;
Smin = $b if($b < $min);
$min = $c if($c < $min); 

$min;
}
sub getMinValue{
($a,Sb,Sc) = @_;
$min = $a;
Smin = $b if($b < $min);
$min = $c if($c < $min); 

$min;
}

getMinValue(14,50,37);
sub getMinValue;

getMinValue(14,50,37);

sub getMinValue{
($a,Sb,Sc) = @_;
$min = $a;
Smin = $b if($b < $min);
$min = $c if($c < $min); 

$min;
}

局部变量

子程序局部变量定义的两种方法:my(只在子程序中存在,再Perl4中没有my)和local(存在于该子程序和其调用的子程序中)

子程序的参数传递

参数为数组时,子程序只将它赋给一个数组变量;但简单变量和数组变量可以同时传递。如:

&twoargs(47,@mylist);  # 47赋给$scalar,@mylist赋给@list
&twoargs(@mylist);  # @mylist的第一个元素赋给$scalat,其余的元素赋给@list
sub twoargs{
  my ($scalar,@list) = @_; 
  }

预定义的子程序

Perl5预定义了三个子程序,BEGIN子程序在程序启动时被调用;END子程序在程序结束时被调用;AUTOLOAD子程序在找不到某个子程序调用。若同一个预定义子程序定义了多个,则BEGIN顺序执行,END逆序执行。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值