zoukankan      html  css  js  c++  java
  • perl学习之子例程

    1.system function  && user function

      system fucntion:chomp  reverse print...

      user function: &+indetifier

    2.define a subroutine

     sub subroutine_name {

        body;

        } 

    eg:sub marine{

         $n +=1;

         print "Hello,sailor number $n! ";

    }

    3.call subroutine

        & subroutine_name();

        eg:&marine;

     4.return value

       子例程总是作为表达式的一部分被调用,即使并不需要表达式的结果.

        每一个子例程在运行过程中,计算值是它一些列动作的一部分.在子例程中得到的最后一个计算值自动成为返回值.

        eg:

            sub sum_of_fred_and_barney{

               print "Hey,you called the sum of fred and barney subroutine! ";

               $fred + $barney; #这不是真正的返回值

               print "Hey,I'm returning a value now! ";#糟了!!!

         }

          NOTE: 向子例程增加代码时要确保最后一个表达式的结果是你希望的返回值.

       5.arguments

          参数列表在子例程运行期间被自动地付给一个特别的数组变量@_.子例程可以访问这个变量以确定参数个数和参数的值.

          所以:第一个参数$_[0]

                 第二个参数$_[1]

         NOTE: $_ 与$_[0] $_[1] 完全是两回事,不要混淆了。

          如果超出了@_数组范围,你将得到undef,@_变量是子例程的局部变量,总是当前子例程调用的参数列表。

        6.subroutine 's private variable

          default: perl中所有变量都使全局变量

           但可以用my 声明私有变量

           eg: sub max {

            my($a,$b);

            ($a,$b) = @_;

            if($a>$b) {$a} else {$b} ##不要分号

           }

           7.可变长参数列表

               eg: $maximum  = &max(3,5,10,4,6);

                     sub max {

                           my($max_so_far) = shift @_;

                            foreach (@_) {

                             if ($_ > $max_so_far) {

                                  $max_so_far = $_;

                               }

                             }

                                   $max_so_far;

                      }

               参数列表也有可能是空的 eg: $maximum = &max(@numbers); @numbers 有可能为空列表

            8.my ---词法变量说明

             词法变量的作用域限制在最小的封闭块或文件中。

             任何新标量都以空开始------对标量是undef ,对数组是空列表。

            9.use strict 

              use warning

               尽量使用

            10.return

               return 之后的语句不在执行。

             11.&

               &开头,一定是子例程调用。但函数调用不一定有& ()。

               perl的哲学是 没有必要的就不要。

  • 相关阅读:
    从壹开始前后端分离[.NetCore ] 38 ║自动初始化数据库(不定期更新)
    从壹开始前后端分离[.NetCore] 37 ║JWT实现权限与接口的动态分配——复杂策略授权
    从壹开始微服务 [ DDD ] 之十二 ║ 核心篇【下】:事件驱动EDA 详解
    从壹开始微服务 [ DDD ] 之八 ║剪不断理还乱的 值对象和Dto
    从壹开始微服务 [ DDD ] 之七 ║项目第一次实现 & CQRS初探
    CentOS7下的CDH 6.2.0 安装过程
    php获取客户端IP地址的方法
    IntelliJIdea 2016.2 使用 tomcat 8.5 调试spring的web项目时,bean被实例化两次导致timer和thread被启动了两遍的问题的解决
    Linux 系统 TCP优化
    Fedora 25-64位操作系统中安装配置Hyperledger Fabric过程
  • 原文地址:https://www.cnblogs.com/chip/p/4181375.html
Copyright © 2011-2022 走看看