如何启动Perl的交互式控制台,类似于Ruby的irb命令或python的python命令?


当前回答

Read-eval-print循环:

$ perl -e'while(<>){print eval,"\n"}'

其他回答

Perl -d是你的朋友:

% perl -de 0

您可以直接进入内置调试器并从那里运行命令。

   perl -d -e 1

Perl不像Python那样内置交互式控制台。但是,您可以使用Perl调试器来做调试相关的事情。您可以使用-d选项打开它,但您可能想要查看'man perldebug'以了解它。

在谷歌搜索一下之后,有一个单独的项目实现了Perl控制台,您可以在 Perl控制台- Perl代码与完成的交互式计算器。

希望这能有所帮助!

更新:我已经创建了一个可下载的REPL -见我的另一个答案。

事后看来:

The third-party solutions mentioned among the existing answers are either cumbersome to install and/or do not work without non-trivial, non-obvious additional steps - some solutions appear to be at least half-abandoned. A usable REPL needs the readline library for command-line-editing keyboard support and history support - ensuring this is a trouble spot for many third-party solutions. If you install CLI rlwrap, which provides readline support to any command, you can combine it with a simple Perl command to create a usable REPL, and thus make do without third-party REPL solutions. On OSX, you can install rlwrap via Homebrew with brew install rlwrap. Linux distros should offer rlwrap via their respective package managers; e.g., on Ubuntu, use sudo apt-get install rlwrap. See Ján Sáreník's answer for said combination of rlwrap and a Perl command.


你不明白Ján的答案:

自动完成 能够输入多行语句

唯一的第三方解决方案提供这些(不简单的安装+额外的,不明显的步骤)是psh,但是:

它已经有大约两年半没有活动了 它的重点是不同的,它的目标是成为一个成熟的shell替代品,因此像传统的shell一样工作,这意味着它不会像Perl语句一样自动计算命令,而需要显式的输出命令(如print)来打印表达式的结果。


Ján Sáreník的答案可以从一个方面得到改进:

默认情况下,它将数组/列表/哈希表打印为标量,也就是说,只打印它们的元素计数,而相反,枚举它们的元素会更方便。

如果您使用[sudo] cpan Data::Printer作为一次性操作安装Data::Printer模块,您可以将其加载到REPL中,以使用p()函数,您可以将列表/数组/哈希表传递给该函数进行枚举。

下面是一个名为iperl的别名,它支持readline和Data::Printer,你可以把它放在类似posix的shell初始化文件中(例如,~/.bashrc):

alias iperl='rlwrap -A -S "iperl> " perl -MData::Printer -wnE '\''BEGIN { say "# Use `p @<arrayOrList>` or `p %<hashTable>` to print arrays/lists/hashtables; e.g.: `p %ENV`"; } say eval()//$@'\'

例如,您可以执行以下操作,通过哈希表%ENV打印所有环境变量:

$ iperl        # start the REPL
iperl> p %ENV  # print key-value pairs in hashtable %ENV

与Ján的答案一样,表达式的标量结果会自动打印出来;例如:

iperl> 22 / 7  # automatically print scalar result of expression: 3.14285714285714

你可以在一个简单的程序上使用perl调试器,如下所示:

perl -de1

还有Alexis Sukrieh的Perl控制台应用程序,但我没有使用过它。