perl的subroutines

 

一 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 !

 

 

完!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值