我如何开始Perl的交互式控制台,类似于Ruby的irb
命令或python
为Python?
有两种流行的Perl REPLs。
perl -d
是你的朋友:
% perl -de 0
从杰韦利re.pl :: REPL
我总是这样:
perl -wlne'eval;print$@if$@'
随着5.10,我已经切换到:
perl -wnE'say eval()//$@'
阅读-EVAL-打印循环:
$ perl -e'while(<>){print eval,"\n"}'
Perl中没有一个控制台,但调试器可以作为一个。在命令提示,键入perl -de 1
。 (值“1”不要紧,这只是什么也不做一个有效的声明。)
还有一对夫妇的Perl shell选项。
欲了解更多信息,请阅读perlfaq3。
你可以看看这里PSH:http://gnp.github.io/psh/
它是一个完整的外壳(可以替换的bash例如使用它),但使用perl的语法..这样你就可以动态创建等方法
在Debian / Ubuntu的:
$ sudo apt-get install libdevel-repl-perl
$ re.pl
$ sudo apt-get install libapp-repl-perl
$ iperl
更新:因为我已经创建了一个可下载的REPL - 见my other answer。
事后的好处:
rlwrap
,这对任何命令提供的ReadLine支持,你可以用一个简单的Perl命令创建一个可用的REPL结合起来,从而使离不开第三方REPL解决方案。
在OSX中,您可以通过与rlwrap
Homebrew安装brew install rlwrap
。
Linux发行版应通过各自的包管理器提供rlwrap
;例如,在Ubuntu,使用sudo apt-get install rlwrap
。
见Ján Sáreník's answer为rlwrap
的所述组合和一个Perl命令。你不扬的回答能得到什么:
唯一的第三方解决方案,提供这些(与不平凡的安装+其他非显而易见的步骤),是psh,但是:
print
打印一个表达式的结果。Ján Sáreník's answer可以以某种方式加以改进:
如果安装有Data::Printer
作为一次性操作的[sudo] cpan 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
与简的答案,表达的标量结果被自动打印;例如。:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
马特·特劳特的overview列出了五个选项,从perl -de 0
起,他建议Reply
,如果通过插件扩展性是非常重要的,还是从tinyrepl
Eval::WithLexicals
,对于包括readline的支持和词汇持久性最小,纯perl的解决方案。
不仅没有马特·特劳特写一个REPL的一篇文章,他居然写了一个 - Devel::REPL
我用它有点和它的作品相当不错,而且它正在积极发展。
顺便说一句,我不知道为什么有人改装成使用下来“的perl -e”从控制台谁提到的人。这是不是一个真正的REPL,真实的,但它是有用的飞驰,我用它所有的时间。
也期待在CPAN关系不得不舍弃ptkdb:http://search.cpan.org/search?query=ptkdb&mode=all
棕褐色和PDE也有自己的REPLs(GNU Emacs的)。
又见时尚REPL(GNU Emacs的)http://blog.jrock.us/articles/Stylish%20REPL.pod
我写了一个脚本我称之为“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>
我想你问一个REPL(读,评估,打印,环路)接口的Perl。有几个方法可以做到这一点:
我使用命令行控制台:
$ perl -e 'print "JAPH\n"'
然后,我可以用我的bash历史找回旧命令。这不保留状态,但是。
当你想测试“一个小东西”(Perl的回答提问时等),这种形式是最有用的。通常情况下,我觉得这些命令获取逐字刮入shell脚本或生成文件。
没有一个交互式控制台对Perl建于像Python一样。但是,您可以使用Perl调试器来调试做相关的东西。您-d选项打开它,但你可能要检查出“人perldebug更多地了解它。
有点谷歌搜索后,有一个单独的项目,实现了一个Perl控制台,你可以找到在http://www.sukria.net/perlconsole.html。
希望这可以帮助!
你可以随时拖放到内置的调试和运行命令从那里。
perl -d -e 1
我创建perli
,在Linux,MacOS和Windows上运行一个Perl REPL。
其焦点是自动的结果打印,方便文档查找,和正则表达式匹配的容易检查。 你可以看到截图here。
它的工作原理单机(有没有比Perl本身以外的依赖),但强烈建议安装rlwrap
,以便支持命令行编辑,持久命令历史和Tab键完成 - 阅读更多here。
安装
npm install -g perli
perli
在系统中的路径的文件夹,并使其与chmod +x
可执行文件。
Windows系统:下载this script为perli.pl
(注意.pl
扩展名)在你的系统的文件夹路径。
如果你不介意调用Perli为perli.pl
,你都设置。
否则,创建具有以下内容的文件夹命名perli.cmd
一个批处理文件:@%~dpn.pl %*
;这使得调用刚才perli
。