caller
caller caller EXPR
这个函数返回关于当前子过程调用等方面的堆栈信息。如果没有参数,它返回包名,文件名,和调用当前子过程的程序的行号:
($package, $filename, $line) = caller; 如果带参数调用,caller 把 EXPR 算做从当前的堆栈位置向回退的桢数。比如,参数 0 意思是当前堆栈桢,1 意思是该调用者,2 意思是调用者的调用者,以此类推。
- #!/usr/bin/perl
- use strict;
- use warnings;
- sub b{
- my $x=(caller(0))[3];
- print "\nIn subroutine $x\n";
- print "\nThe result of caller 0:\n";
- print join "\n", caller 0;
- print "\nThe result of caller 1:\n";
- print join "\n", caller 1;
- }
- sub a{
- my $x=(caller(0))[3];
- print "\nIn subroutine $x\n";
- print "\nThe result of caller 0:\n";
- print join "\n", caller 0;
- print "\nThe result of caller 1:\n";
- print join "\n", caller 1;
- &b;
- }
- &a;