In this article, I note down a very useful approach in Perl, to better track and locate the caller of certain subroutine.
caller function
Like the C language, Perl provides things like __LINE__ and __FILE__ to
indicate the current program line and file, speeding finding the correct place
where an error may exist.
However, these macros are limited when searching for the exact caller of the function, since they record only the very line (and file) where the macros lie.
Luckily, in Perl language, it provides a solution to it. The caller function
in Perl provides exactly what I want. The calling convention of caller can be
my ($package, $filename, $line) = caller;
To understand how caller works, an example is provided below.
# test.pl
sub foo {
my ($package, $filename, $line) = caller;
print "$package: $filename: $line\n";
}
foo; # at line 8
# Do some other work
foo; # at line 12
And here is the output.
main: test.pl: 8
main: test.pl: 12
Acknowledgements
This article is written based on this document. Please refer to it for a
deeper introduction about caller.