Perl子程序

本文详细介绍了Perl子程序的定义、调用与返回值,包括子程序的基本属性、参数传递、变量使用,以及中级用法如use strict编译指令和子程序签名等,强调了子程序在不同场景下的应用和注意事项。
摘要由CSDN通过智能技术生成

Perl子程序

1. 子程序的基本属性

1.1 子程序的定义

  • 要定义子程序,首先要以关键字 sub 开头,再加上子程序名,花括号,花括号中包含的是函数的主体。
  • 子程序可以被定义在程序的任意位置;不需要对子程序进行事先声明;
  • 子程序是全局的,如果定义了两个重名的子程序,后面的子程序会覆盖前面的那个;
#a simple subroutine
sub marine{
   
	$n += 1;
	print "$n time call marine subroutine.\n";
}

1.2 子程序的调用和返回值

  • 子程序调用:在任意表达式中,子程序前面的 & 表示调用这个子程序;如 &marine
  • 子程序返回值(标量):
    • Perl中子程序没有 “有无返回值” 的区别;
    • 任何时候子程序都有返回值,但有时这个值并没有什么用处,每次都写返回值return就显得十分麻烦;
    • Perl将子程序执行的最后一次运算的 “结果” ,结果不一定是数值计算得到,当做返回值;
  • 子程序返回值 (非标量):
    • 如果在子程序最后一句调用列表上下文,可以返回列表值;
#non-scalar return value
sub list_from_fred_to_barney{
   
	if ($fred < $barney) {
   
		$fred..$barney;
	} else {
   
    	reverse $fred..$barney;
    }
}
$fred = 11;
$barney = 6;
@c = &list_from_fred_to_barney;   #@c is (11 10 9 8 7 6) now

注意1.1中例:marine子程序执行的最后一次运算是print,它的返回值通常是 1,表示成功输出信息,但显然这不是我们想要的值,所以一定要注意子程序中最后执行的语句。

1.3 子程序的参数

  • Perl支持参数传入,要传递参数列表到子程序里,只要在子程序调用的后面加上括号内的列表表达式即可;
  • 列表传入子程序后,子程序自动将参数存入 @_,该变量在子程序执行期间有效,子程序通过访问这个数组,以判断参数的个数和参数值;
    • 传入的参数 > 子程序需要,后面的参数将被忽略;
    • 传入的参数 < 子程序需要,缺少的参数值被定为undef;
#列表传入,max比较传入的两个参数,返回值较大的那个
sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值