perl的subroutines
发布时间:2020-12-16 00:16:45 所属栏目:大数据 来源:网络整理
导读:? 一 subroutines 1)定义 sub NAME {...} . 不需要指定参数和返回值。函数内使用@_来访问函数传入的参数,一般函数内使用local( $var,$var2,$var3) = @_或my( $var,@vars) = @_;来访问函数的传入参数。如果没有使用return的话,默认地最后一条语句的值作为
? 一 subroutines 1)定义 sub NAME {...} . 不需要指定参数和返回值。函数内使用@_来访问函数传入的参数,一般函数内使用local( $var,$var2,$var3) = @_或my( $var,@vars) = @_;来访问函数的传入参数。如果没有使用return的话,默认地最后一条语句的值作为函数的返回值。$_[0]表示第一个参数,$_[$#_]表示最后一个参数,$#_ + 1 表示参数个数,也可以scalar(@_)来获得参数个数。 2)subroutines中定义的变量,必须使用my,local,our来控制变量的生命周期,如下: 实例如下: 3)命名参数,实例: ?4)匿名subroutines,例如$ref = sub {...},有点函数指针的意思。 ? 二 实例
#
!/usr/bin/perl?-W
use ?strict; sub ?Add { ?? my ? @nums ? = ? @_ ; ?? my ? $sum ? = ? 0 ; ?? foreach ? my ? $num ?( @nums ) ??{ ???? $sum ? += ? $num ; ??} ?? return ? $sum ?; } sub ?Multiply { ???? my ? @nums ? = ? @_ ; ???? my ? $sum ? = ? 1 ; ???? $sum ? *= ? $_ ? for ? @nums ; ???? return ? $sum ; } sub ?ToSentence { ???? my ? @words ? = ? @_ ; ???? return ?( join ( " ? " , @words )); } sub ?Hello { ???? print ? " hello?world! " ; } sub ?Main { ???? my ?( $caltype , ? @nums )? = ? @_ ; ???? if ?( $caltype ?eq? " Add " )? ????{ ???????? print ?(Add( @nums )); ????} ???? elsif ( $caltype ?eq? " Multiply " ) ????{ ???????? print ?(Multiply( @nums )); ????} ???? elsif ( $caltype ?eq? " ToSentence " ) ????{ ???????? print (ToSentence( @nums )); ????} ???? else ????{ ????????Hello(); ????};???? ???? } Main( @ARGV ); # ?Multiply?10?20?30 #?Add?10?20?30?40?50 #?ToSentence?hello?how?are?you?! #? ? ? 完! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |