caller caller EXPR

这个函数返回关于当前子过程调用等方面的堆栈信息。如果没有参数,它返回包名,文件名,和调用当前子过程的程序的行号:

   ($package, $filename, $line) = caller;
如果带参数调用,caller 把 EXPR 算做从当前的堆栈位置向回退的桢数。比如,参数 0 意思是当前堆栈桢,1 意思是该调用者,2 意思是调用者的调用者,以此类推。
[plain] view plaincopy
    1. #!/usr/bin/perl  
    2. use strict;  
    3. use warnings;  
    4. sub b{  
    5.     my $x=(caller(0))[3];  
    6.         print "\nIn subroutine $x\n";  
    7.         print "\nThe result of caller 0:\n";  
    8.     print join "\n", caller 0;  
    9.         print "\nThe result of caller 1:\n";  
    10.     print join "\n", caller 1;  
    11. }  
    12.   
    13. sub a{  
    14.     my $x=(caller(0))[3];  
    15.         print "\nIn subroutine $x\n";  
    16.         print "\nThe result of caller 0:\n";  
    17.     print join "\n", caller 0;  
    18.         print "\nThe result of caller 1:\n";  
    19.     print join "\n", caller 1;  
    20.         &b;  
    21. }  
    22. &a; 

相关文章:

  • 2021-08-29
  • 2021-08-25
  • 2022-02-05
  • 2021-08-08
  • 2022-03-02
  • 2021-08-07
猜你喜欢
  • 2021-06-27
  • 2022-12-23
  • 2021-11-28
  • 2021-08-11
  • 2021-11-17
  • 2022-12-23
  • 2021-06-25
相关资源
相似解决方案