子程序定义和返回值
sub sum{ print "调用了子程序\n"; $a + $b; #后一行为返回值 } $a=1; $b=33; $s =∑ #34 调用子程序
子程序中的参数,参数固定(下面例子只能2参数),程序第一个参数为$_[0],第二个为$[1],依次类推
sub max { if($_[0] > $_[1] ){ $_[0]; }else{ $_[1]; } } $n = & max(10,15); #结果为15
子程序中私有变量
sub max { my($m,$n) = @_; }
限制参数长度
sub max{ if(@_ != 2){ print "waring! &max arguments not match" } }
变长参数列表
sub max { my($max_num) = shift @_; #数组中的第一个值 foreach (@_){ if($_ > $max_num){ $max_num = $_; } } $max_num; } $maximum = &max(1,6,10,5,60,9); print $maximum
关于my变量
my($num) = @_; #列表上下文 my $num = @_; #标题上下文 my(a,b) = @_;
最好使用 use strict;
use 5.012 #自动加载strict编译指令
return操作符
如果像在子函数,foreach提前结束可使用return操作符。
省略&与号
一般情况可省略, 如果像定义了与内置函数同名,如chomp,则不能省略,调用必需为&chomp;
非标题返回值
sub sum{ 1..10; }
持久性私有变量state , 如果在strict模式下,使用全局变量会报错。
use strict; use feature qw(state); sub marine{ state $n = 0; $n += 1; print "$n\n"; } &marine; #1 &marine; #2 &marine; #3
原文地址:https://www.cnblogs.com/qinzb/p/9185459.html
时间: 2024-10-08 15:31:28