如何为Perl启动交互式控制台,类似于irb
Ruby或python
Python 的命令?
您可以在一个简单的程序上使用perl调试器,如下所示:
perl -de1
另外还有Alexis Sukrieh的Perl控制台应用程序,但我还没有使用它.
Matt Trout不仅写了一篇关于REPL的文章,他还写了一篇--Devel :: REPL
我已经使用了一下它运行得相当好,而且它正在积极开发中.
顺便说一句,我不知道为什么有人对控制台上使用"perl -e"提到的人进行了修改.这不是真正的REPL,是真的,但它非常有用,而且我一直都在使用它.
我写了一个我称之为"psh"的脚本:
#! /usr/bin/perl while (<>) { chomp; my $result = eval; print "$_ = $result\n"; }
无论你输入什么内容,它都会在Perl中进行评估:
> gmtime(2**30) gmtime(2**30) = Sat Jan 10 13:37:04 2004 > $x = 'foo' $x = 'foo' = foo > $x =~ s/o/a/g $x =~ s/o/a/g = 2 > $x $x = faa
如果您需要历史记录,请使用rlwrap.这可能是你~/bin/ips
的例子:
#!/bin/sh echo 'This is Interactive Perl shell' rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
这就是它的样子:
$ ips This is Interactive Perl shell perl> 2**128 3.40282366920938e+38 perl>
我想你要问perl的REPL(读,评估,打印,循环)接口.有几种方法可以做到这一点:
Matt Trout有一篇文章描述了如何编写一个
阿德里亚诺·费雷拉描述了一些选择
最后,你可以在irc.perl.org上跳过IRC并在许多热门频道中试用一个评估机器人.他们将评估你传递给他们的perl块.
我使用命令行作为控制台:
$ perl -e 'print "JAPH\n"'
然后我可以使用我的bash历史来恢复旧命令.但是,这并不保留状态.
当您想要测试"一件小事"时(例如回答Perl问题时),此表单最有用.通常,我发现这些命令被逐字删除到shell脚本或makefile中.
没有像Python那样内置Perl的交互式控制台.但是,您可以使用Perl调试器来调试相关的事情.你用-d选项打开它,但你可能想看看'man perldebug'来了解它.
经过一些谷歌搜索,有一个单独的项目,实现了你可以找到的Perl控制台 http://www.sukria.net/perlconsole.html.
希望这可以帮助!
您可以随时进入内置调试器并从那里运行命令.
perl -d -e 1
有两种流行的Perl REPL.
1.开发:: REPL很棒.
但IMO 答复更好.
我创建perli
了一个在Linux,macOS和Windows上运行的Perl REPL.
它的重点是自动结果打印,方便的文档查找以及对常规表达式匹配的轻松检查.
你可以在这里看到截图.
它独立工作(没有Perl本身以外的依赖项),但强烈建议安装rlwrap
以支持命令行编辑,持久命令历史记录和制表符完成 - 请在此处阅读更多内容.
安装
如果您碰巧安装了Node.js:
npm install -g perli
除此以外:
Unix的样平台:下载这个脚本是perli
在你的系统路径的文件夹,并使其可执行文件chmod +x
.
视窗:下载这个脚本为perli.pl
(注意.pl
扩展名)在系统中的路径的文件夹.
如果你不介意调用Perli perli.pl
,那么你已经完成了.
否则,perli.cmd
使用以下内容创建在同一文件夹中命名的批处理文件:@%~dpn.pl %*
; 这使得调用成为公正perli
.
perl -d
是你的朋友:
% perl -de 0
来自Devel :: REPL的re.pl
我一直这样做:
rlwrap perl -wlne'eval;print$@if$@'
使用5.10,我切换到:
rlwrap perl -wnE'say eval()//$@'
读取 - 评估 - 打印循环:
$ perl -e'while(<>){print eval,"\n"}'