代码之家  ›  专栏  ›  技术社区  ›  Pablo Marin-Garcia

使用Perl调试器与真正的REPL(如Devel::REPL)相比有哪些缺点?

  •  6
  • Pablo Marin-Garcia  · 技术社区  · 15 年前

    我通常使用 perl -de 42 用于获取交互式Perl shell。我见过 Devel::REPL 我看过一些博客,比如 http://www.xenoterracide.com/2010/07/making-repl-usable.html 解释如何增强 Devel::REPL

    将调试器用作交互式shell是不是太糟糕了?为什么?

    注: 本文提到的缺点 PerlMonks node 是用户的限制,而不是Perl调试器的限制。

    在哪里可以阅读更多关于Perl REPL的信息?

    更新: 我接受了Pedro的回答,因为它回答了我提出的问题,但我仍然想知道何时以及为什么(如果有的话)将Perl调试器用作交互式shell与Perl REPL实现相比是个坏主意。您喜欢哪种Perl REPL?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Pedro Silva    15 年前

    一个缺点是 perl -d 词法变量立即超出范围。例子:

    DB<1> my $p = 123;
    
    DB<2> print $p;
    
    DB<3>
    

    perldebug :

    隐式作用域。因此任何新的 引入词汇变量或任何 在评估后失去了。调试器是一个 您可以使用 范围,塞进一行范围,塞进一行。

        2
  •  3
  •   ysth    15 年前

    我倾向于只使用

    perl -wnE'say eval()//$@'
    

    使用调试器的一个优点是能够 $DB::single=1 在给定的点上停止并一步一步地走。

        3
  •  1
  •   draegtun    15 年前

    两者都有不同的目标。调试器针对以下方面进行了优化: 调试 REPL 主要目标是提供快速的语言反馈,并针对(开发人员)交互式输入进行优化。

    DB<1> for my $x (1..10) {
    

    我得到一个 Missing right curly or square bracket at (eval 5)...

    Devel::REPL 允许多行输入:

    $ for my $x (1..3) {
    > say $x;
    > }
    1
    2
    3
    

    开发::复制 有了额外的插件,它就成了一个方便的开发工具,可以在编辑器旁边运行。

    /I3az公司/