加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何打印所有已执行的子程序?

发布时间:2020-12-15 23:22:57 所属栏目:大数据 来源:网络整理
导读:例如.我有跟随Perl脚本 { package A; { package B; sub _y { print "Just Another Perl Hackern"; } } sub _x { print "Hello world!n"; B::_y(); }}use strict;use warnings;_x(); 如何使用包限定符将每个执行的子打印到STDERR或任何日志文件? 例如.从上
例如.我有跟随Perl脚本

{ 
    package A;

    {
        package B;

        sub _y {
            print "Just Another Perl Hackern";

        }

    }

    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::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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读