例如,我有以下Perl脚本
{
package A;
{
package B;
sub _y {
print "Just Another Perl Hacker
";
}
}
sub _x {
print "Hello world!
";
B::_y();
}
}
use strict;
use warnings;
_x();
如何将每个带有包限定符的已执行SUB打印到STDERR或任何日志文件?
例如,在上面的脚本中,我预计会看到以下输出:
1 A::_x()
2 B::_y()
我认为可以使用像devel::NYTProf这样的调试器,但我还没有找到用于该简单任务的特定调试器模块或它们的参数。
有什么想法吗?
可以使用标准perl调试器:
$ PERLDB_OPTS="NonStop frame=1" perl -d prog.pl
entering CODE(0x260cd78)
entering strict::import
entering CODE(0x260cd18)
entering warnings::import
Package try.pl.
entering DB::Obj::_init
entering A::_x
Hello world!
entering B::_y
Just Another Perl Hacker
(请注意,我必须将_x();
更改为A::_x();
才能运行您的代码。)
LineInfo=filenamehere
。详情请参见perldoc perldebug
。(尤其是,如果您将选项更改为frame=2
,您还会收到从子例程返回的消息。)
CODE
引用用于use
语句周围的隐式BEGIN
块:
use strict;
真正的意思是
BEGIN {
require "strict.pm";
strict->import();
}