加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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?!
#?

?

?

完!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读