PythonのRubyまたはirb
のpython
コマンドと同様に、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(読み取り、評価、印刷、ループ)インターフェースについて質問していると思います。これを行うにはいくつかの方法があります。
コマンドラインをコンソールとして使用します。
$ Perl -e 'print "JAPH\n"'
その後、bash historyを使用して古いコマンドを取得できます。ただし、これは状態を保持しません。
このフォームは、「Perlの質問に答えるときのように」「ちょっとしたこと」をテストするときに最も役立ちます。多くの場合、これらのコマンドは逐語的にシェルスクリプトまたはメイクファイルに組み込まれます。
Pythonのような組み込みのPerl用の対話型コンソールはありません。ただし、Perlデバッガーを使用して、関連するデバッグを行うことはできます。 -dオプションを使用してオンにしますが、「man perldebug」を調べて確認することをお勧めします。
少しググリングした後、 http://www.sukria.net/perlconsole.html で見つけることができるPerlコンソールを実装する別のプロジェクトがあります。
お役に立てれば!
いつでも組み込みのデバッガーにドロップして、そこからコマンドを実行できます。
Perl -d -e 1
perli
、Perl REPLを作成しましたLinux、macOS、およびWindows。
その焦点は、自動結果印刷、便利なドキュメント検索、および正規表現一致の簡単な検査です。
スクリーンショットを見ることができます こちら 。
動作しますstandalone(Perl自体以外の依存関係はありません)が、 rlwrap
のインストールは を強くお勧めします。コマンドライン編集、永続的なコマンド履歴、タブ補完をサポートします-詳細は こちら をご覧ください。
インストール
Node.jsがインストールされている場合:
npm install -g perli
そうでなければ:
2つの一般的なPerl REPLがあります。
Perl -d
はあなたの友達です:
% Perl -de 0
devel :: REPLのre.pl
読み取り-評価-印刷ループ:
$ Perl -e'while(<>){print eval,"\n"}'
私はいつもやった:
Perl -wlne'eval;print$@if$@'
5.10では、次のように切り替えました。
Perl -wnE'say eval()//$@'
ここでpshを調べることができます: http://gnp.github.io/psh/
これはシェルでは完全です(たとえば、bashの代わりに使用できます)が、Perl構文を使用します。そのため、その場でメソッドを作成できます。
Perlにはコンソールはありませんが、デバッガーをコンソールとして使用できます。コマンドプロンプトで、Perl -de 1
と入力します。 (値「1」は重要ではありません、それは何もしない有効なステートメントです。)
Perl Shell のオプションもいくつかあります。
詳細については、 perlfaq を参照してください。
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ソリューション。rlwrap
を Homebrew でbrew install rlwrap
を使用してインストールできます。rlwrap
を提供する必要があります。たとえば、Ubuntuでは、Sudo apt-get install rlwrap
を使用します。rlwrap
とPerlコマンドの上記の組み合わせについては、 JánSáreníkの回答 を参照してください。 得られないものJánの答え:
これらを提供する唯一のサードパーティソリューション(簡単なインストール+追加の非自明な手順)は、pshですが、
それは約2。5年で活動を見ていません
その焦点は、本格的なシェル置換を目指しているため、従来のシェルのように機能するという点で異なります。つまり、コマンドを自動的に評価しないPerlステートメント。式の結果を出力するには、print
などの明示的な出力コマンドが必要です。
JánSáreníkの答え は1つの方法で改善できます:
Data::Printer
モジュールを[Sudo] cpan Data::Printer
とともにワンタイム操作としてインストールする場合、リストを渡すことができるp()
関数を使用するためにREPLにロードできます列挙用の/ arrays/hashtables。
ReadlineおよびData::Printer
をサポートするiperl
という名前のエイリアスは次のとおりです。これは、POSIXのようなシェルの初期化ファイル(たとえば、~/.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の答えと同様に、式のscalar結果はautomatically印刷されます。例えば。:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
セピアとPDEも独自のREPLを持っています(GNU Emacs用)。
Stylish REPL(for GNU Emacs)も参照してください http://blog.jrock.us/articles/Stylish%20REPL.pod
CPANでptkdbも探します: http://search.cpan.org/search?query=ptkdb&mode=all