zoukankan      html  css  js  c++  java
  • Perl的子程序(二)

    在Perl中可以自己创建子程序(Subroutine):

    关键字sub,子程序名以及用花括号封闭起来的代码块。

                    sub  marine { ... }

    子程序名与标量的命名空间是不同的两个部分。

    子程序的返回值:最后一次运算的表达式即是默认的返回值。也可以用return来显式的返回,这样之后的语句不会执行。

                           在标量上下文返回的会是标量,在列表上下文返回的也是列表。

    子程序中的参数:子程序内部可以使用@_,$_[0],$_[1],$_[2],,,这样的变量来表示。@_变量是子程序私有变量,递归调用时,不会出错。

                           在子程序调用时,在子程序名后用括号括住的列表表达式。

                           $n = &max(10,15);          #10后被送到$_[0],15被送到$_[1],@_=(10,15),在标量上下文值为2;

    子程序私有变量定义: my关键字来声明词法变量(lexical variable)。           my($m,$n) = @_;  #创建私有变量并赋值。

                                  不仅可以定义在子程序中,还可以定义在if, while, foreach中。

                                   只能用来声明单个标量/变量,列表/数组。          my $fred, $barney;    #错误,第二个变量无法声明。

    持久性私有变量: 用关键字state来声明,在子程序的多次调用中保留变量之前的值。作用域仍然是只存在于子程序内部。

                            sub  marine  {state $n=0; $n+=1; print; }

                            也可以用来声明数组和哈希类型。   state @number。

    子程序的调用:子程序可以通过 (&+子程序名)的方式来调用。

                        如果编译器之前看到过子程序的定义,那么可以不加&,而直接调用子程序。

                        如果Perl可以通过语法规则直接判断它只能是子程序调用,那么也可以省略 &。

                                也就是说只要你将参数列表放进括号内,就一定是子程序调用。

    use strict;        #强制要求使用一些严格的,良好的编程风格。

  • 相关阅读:
    STM32F0库函数初始化系列:进入STOP模式,外部中断唤醒
    STM32F0库函数初始化系列:ADC
    STM32F0库函数初始化系列:PWM输出
    VBS病毒实验
    AWVS漏洞扫描教程之扫描方式
    利用AWVS扫描Web漏洞
    命令执行漏洞靶场练习二
    命令执行漏洞靶场练习一
    CSRF POST型
    RainbowCrack彩虹表破解密码hash
  • 原文地址:https://www.cnblogs.com/-9-8/p/4485835.html
Copyright © 2011-2022 走看看