【问题标题】:Perl: console / command-line tool for interactive code evaluation and testingPerl:用于交互式代码评估和测试的控制台/命令行工具
【发布时间】:2013-05-24 17:41:12
【问题描述】:

Python 提供了interactive interpreter,允许通过向控制台提交几行代码来评估小代码 sn-ps。我想知道 Perl 是否也存在具有类似功能的工具(例如,包括可通过箭头键访问的历史记录)?

那里似乎有各种各样的解决方案,但我似乎找不到任何好的建议。 IE。提到了很多工具,但我对人们实际使用哪些工具以及为什么使用感兴趣。那么,除了标准的 perl 调试(perl -d -e 1),您有什么好的建议吗?

以下是我看过的一些有趣的页面:

【问题讨论】:

  • perl -d -e 1 有什么问题?
  • 好吧,例如它不能通过箭头键访问命令历史记录。还是我错过了什么?
  • 确实如此,正如我们所说,在 windows 和 linux 中尝试过。
  • @thunk 命令行历史由 Term::ReadLine::Perl 提供。安装它,你的调试器就会使用它。

标签: perl shell command-line console interactive


【解决方案1】:

只是用来获取历史和箭头:

rlwrap perl -de1

【讨论】:

    【解决方案2】:

    即使这个问题有很多答案,我还是会在这个主题上加两分钱。如果您是 ViM 用户,我解决问题的方法很简单,但我想其他编辑器也可以这样做:

    1. 打开您的 ViM,然后输入您的代码。您无需将其保存在任何文件中。

    2. :w !perl 用于评估(:w !COMMAND 将缓冲区通过管道传输到通过运行 COMMAND 获得的进程。在这种情况下,强大的 perl 解释器!)

    3. 看看输出

    这种方法适用于任何解释型语言,而不仅仅是 Perl。

    在 Perl 的情况下,当您编写自己的模块时非常方便,因为根据我的经验,perl 解释器将拒绝重新加载模块(即使尝试加载但失败)。不利的一面是,您每次都会丢失所有上下文,因此如果您正在执行一些繁重或缓慢的操作,您需要保存一些中间结果(而 perl 控制台 方法会保留之前计算的数据)。

    如果您只需要对表达式求值——这是 perl 控制台程序的另一个用例——另一个不错的选择是从 perl -e 命令中查看求值。它启动速度很快,但您必须处理转义(为此,Bash 的 $'...' 语法可以很好地完成这项工作。

    【讨论】:

    • 这太棒了!我使用 vim 作为我的编辑器已经一年多了,之前我从未真正使用过:w !COMMAND 功能。现在我不得不开始使用 perl + 缺乏 IDE 或交互模式(带有命令历史记录 + 跟踪变量),这个 vim 功能将对我有不可估量的帮助。谢谢!
    • @Reilstein,是的,黑客的力量来自 Unix。但要小心 IDE。自动生成的代码,复制和粘贴,缺乏理解。他们是源头的阴暗面。
    【解决方案3】:

    如果您对perl -d -e 1 的问题是它缺少命令行历史记录,那么您应该安装调试器将在安装时使用的Term::ReadLine::Perl

    【讨论】:

    • 顺便说一句很好。我总是安装它以更好地调试,所以我没想解释它。我很高兴你这样做了。
    【解决方案4】:
       perl -d -e 1
    

    非常合适,我多年来一直在使用它。但如果你做不到, 那么你可以查看Devel::REPL

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2017-07-15
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2014-08-29
      • 2017-02-11
      • 2020-02-22
      • 2016-03-15
      相关资源
      最近更新 更多