{ package A; { package B; sub _y { print "Just Another Perl Hacker\n"; } } sub _x { print "Hello World!\n"; B::_y(); }}use strict;use warnings;_x();
如何使用包限定符将每个执行的子打印到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::importPackage try.pl. entering DB::Obj::_init entering A::_xHello World! entering B::_yJust Another Perl Hacker
(注意,我必须将_x();更改为A :: _ x();以使代码运行.)
如果要将输出放在文件中,请添加lineInfo = filenamehere.有关详情,请参见perldoc perldebug
. (特别是,如果将选项更改为frame = 2,则还会获得从子例程返回的消息.)
CODE引用用于围绕use语句的隐式BEGIN块:
use strict;
真正意思
BEGIN { require "strict.pm"; strict->import();}总结
以上是内存溢出为你收集整理的perl – 如何打印所有已执行的子程序?全部内容,希望文章能够帮你解决perl – 如何打印所有已执行的子程序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)