• 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的哲学是 没有必要的就不要。

  • 相关阅读:
    HDU 2655 主席树
    Codeforces Round #169 (Div. 2) A水 B C区间更新 D 思路
    Codeforces Round #402 (Div. 2) A B C sort D二分 (水)
    Docker 网络 Flannel
    Docker 搭建 etcd 集群及管理
    Iptables 端口转发
    CentOS7 citus9.5 集群安装及管理
    Ubuntu 忘记密码
    Zookeeper 启动错误
    数据结构 B树 B+树 B*树 LSM-树
  • 原文地址:https://www.cnblogs.com/chip/p/4181375.html
Copyright © 2020-2023  润新知