Perl caller 函数

  • 描述

    caller 函数返回有关当前子例程调用程序的信息。在标量上下文中,返回调用者的程序包名称或调用者EXPR升级的程序包名称。在列表上下文中,未指定任何参数,调用者将为当前子例程的调用者返回包名,文件名和文件中的行。如果指定了EXPR,调用者将返回扩展信息,以使呼叫者EXPR逐步升级。也就是说,当使用参数1进行调用时,它将返回当前子例程的调用者(父)的信息,使用2将当前子例程的调用者(祖父母)的调用者返回,依此类推。
  • 句法

    以下是此函数的简单语法-
    
    caller EXPR
    
    caller
    
  • 返回值

    此函数在失败时返回undef,在不带参数的情况下调用时返回基本信息,在带参数的情况下返回扩展信息。
  • 示例

    以下是显示其基本用法的示例代码 -
     
    # Function definition
    sub Hello {
       print "Hello, World!\n";
       @array = caller 0;
       $size = @array;
       for($i=0;$i<$size;$i++){
           print "The calling info is ", @array[$i], "\n";
       }
       
    }
    
    # Function call
    Hello();
    
    尝试一下
    执行结果:
    
    Hello, World!
    The calling info is main
    The calling info is Tmp5f6eb7cfa45a01601091535.pl
    The calling info is 13
    The calling info is main::Hello
    The calling info is 1
    The calling info is 
    The calling info is 
    The calling info is 
    The calling info is 256
    The calling info is 
    The calling info is