zoukankan      html  css  js  c++  java
  • 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 !

    完!


    作者:iTech
    微信公众号: cicdops
    出处:http://itech.cnblogs.com/
    github:https://github.com/cicdops/cicdops

  • 相关阅读:
    ASP.NET设置数据格式与String.Format使用总结(转)
    js 获取后台数据
    PowerDesigner设计的问题
    .Net设计模式
    js刷新
    UML使用问题
    Cookie揭秘
    数据库设计的十四个技巧
    jquery插件小试牛刀:文本框为空时默认文字显示,获得焦点后默认文字消失
    javascirpt 读写cookie
  • 原文地址:https://www.cnblogs.com/itech/p/1692683.html
Copyright © 2011-2022 走看看