zoukankan      html  css  js  c++  java
  • 子程序定义-2

    [oracle@jhoa 16]$ cat 1.pl 
    #!/usr/bin/perl
    print "1.函数可放在任何地方.
    ";
    while (1) {
    &readline;
    ##输入等于q 就退出
    last if ($line eq "q
    ");
    sub readline {
        $line = <STDIN>;
       }
    }
    
    [oracle@jhoa 16]$ perl 1.pl 
    1.函数可放在任何地方.
    q
    
    
    变量;
    
    全局变量:不加说明的变量为全局变量,在子程序中改变会覆盖已有的值。
    
    局部变量my: 用my说明的变量如my $a;
    
    my 定义的变量只有在该子程序中存在。
    
    
    局部变量my:用my 说明的变量如my $a;
    
    my定义的变量只在该子程序中存在
    
    my定义的变量在程序块内存在,包括在程序块内部定义的程序块也可见。在程序块外撤销。如果在主程序开头定义
    
    时相当于全局变量。
    
    程序块时由{}包含的语句,if,while,sub都可以定义程序块
    
    [oracle@jhoa 16]$ cat 2.pl 
    print "2.用别名传递
    ";
    $foo = 26;
    @foo = ("here's","a","list");
    &testsub (*foo);
    
    
    
    sub testsub {
     local (*printarray) = @_;
        print  "$printarray
    " ;
    }
    
    
    
    
    [oracle@jhoa 16]$ perl 2.pl 
    2.用别名传递
    26
    
    
    
    
    
    
    局部变量
    
    local 定义的变量不存在与主程序中,但存在于该子程序和孩子程序调用的子程序中
    
    sub spoof{
    
    local ($value) = "temporary";
    tellme();
    }
    
    sub tellme {
    print "Current value is $value
    ";
    }
    
    用my时$value只存在于spoof中,tellme是另一个块,其中的$value中不同的变量。
    
    用local 变量可在调用的子程序出现,可以打印出值。
    
    LOCAL 在本块内改变全局变量的值如$/.出了块就恢复。内部变量不能用my声明。
    
    
    
    
    调用子程序:
    
    无论子程序定义在什么地方都可用&调用子程序
    
    常用调用:subname(1,2);
    
    只有在调用之前已经定义的子程序才可以省略&
    
    sub subname{}......subname;
    
    前向引用: 先声明,再调用,再定义。
    
    

  • 相关阅读:
    LeetCode 449. Serialize and Deserialize BST
    LeetCode Word Abbreviation
    LeetCode 402. Remove K Digits
    LeetCode 439. Ternary Expression Parser
    LeetCode Frog Jump
    LeetCode 630. Course Schedule III
    LeetCode 729. My Calendar I
    LeetCode 567. Permutation in String
    LeetCode Find Permutation
    LeetCode Number of Atoms
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352001.html
Copyright © 2011-2022 走看看