Jawaban:
Anda dapat menggunakan perl debugger pada program sepele, seperti:
perl -de1
Atau ada aplikasi Perl Console Alexis Sukrieh , tapi saya belum menggunakannya.
control
+ L
tidak berfungsi di bawah antarmuka perintah ini, bagaimana cara menyegarkan layar?
rlwrap
). Semua solusi REPL / konsol pihak ketiga, termasuk perlconsole
, rumit untuk dipasang dan seringkali memiliki lebih banyak keterbatasan.
perl -de1
tampaknya tidak mendukung my
variabel, dan hash juga tidak berfungsi, untuk beberapa alasan ...
perlconsole
tidak menderita masalah ini.
Matt Trout tidak hanya menulis artikel tentang REPL, ia juga menulis satu - Devel :: REPL
Saya sudah menggunakannya sedikit dan bekerja dengan cukup baik, dan sedang dalam pengembangan aktif.
BTW, saya tidak tahu mengapa seseorang mengubah orang yang disebutkan menggunakan "perl -e" dari konsol. Ini sebenarnya bukan REPL, benar, tetapi ini sangat berguna, dan saya menggunakannya setiap saat.
[sudo] cpan Devel::REPL
tidak bekerja untuk saya, baik pada OSX 10.10 (Perl 5.18.2) maupun di Ubuntu 14.04 (Perl 5.18.2): Saya mendapatkan kesalahan runtime mengeluh tentang modul yang hilang; menginstal satu, lalu menyerah setelah modul lain yang hilang dilaporkan.
re.pl
penulis, menulis sebuah artikel daftar beberapa alternatif, dan ia sendiri menyarankan menggunakan reply
bukan re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
Saya menulis skrip yang saya sebut "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Apa pun yang Anda ketikkan, ia mengevaluasi dalam 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
Jika Anda ingin riwayat, gunakan rlwrap . Ini bisa menjadi milik Anda ~/bin/ips
misalnya:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Dan seperti inilah tampilannya:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Pengguna OSX dapat menginstal rlwrap
melalui Homebrew with brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Saya pikir Anda bertanya tentang antarmuka REPL (Read, Evaluate, Print, Loop) ke perl. Ada beberapa cara untuk melakukan ini:
Saya menggunakan baris perintah sebagai konsol:
$ perl -e 'print "JAPH\n"'
Lalu saya bisa menggunakan riwayat bash saya untuk mendapatkan kembali perintah lama. Namun, ini tidak melindungi negara.
Formulir ini paling berguna ketika Anda ingin menguji "satu hal kecil" (seperti saat menjawab pertanyaan Perl). Seringkali, saya menemukan perintah-perintah ini dikikis kata demi kata menjadi script shell atau makefile.
fish
Anda bahkan tidak perlu \n
.
Tidak ada konsol interaktif untuk Perl yang dibangun seperti halnya Python. Namun Anda dapat menggunakan Perl Debugger untuk melakukan debugging hal-hal terkait. Anda menyalakannya dengan opsi -d, tetapi Anda mungkin ingin memeriksa 'man perldebug' untuk mempelajarinya.
Setelah sedikit googling, ada proyek terpisah yang mengimplementasikan konsol Perl yang dapat Anda temukan di http://www.sukria.net/perlconsole.html .
Semoga ini membantu!
Anda selalu bisa masuk ke debugger bawaan dan menjalankan perintah dari sana.
perl -d -e 1
Ada dua REPL Perl yang populer.
sudo apt-get install libreply-perl
. Maka bisa dijalankan cukup mengetik reply
di terminal.
Saya telah membuat perli
, REPL Perl yang berjalan di Linux, macOS, dan Windows .
Fokusnya adalah pencetakan hasil otomatis, pencarian dokumentasi yang mudah, dan pemeriksaan mudah terhadap kecocokan ekspresi reguler.
Anda dapat melihat tangkapan layar di sini .
Ia bekerja sendiri (tidak memiliki dependensi selain Perl sendiri), tetapi instalasi rlwrap
sangat disarankan untuk mendukung pengeditan baris perintah, riwayat perintah persisten, dan penyelesaian tab - baca lebih lanjut di sini .
Instalasi
Jika Node.js Anda terinstal:
npm install -g perli
Jika tidak:
Unix -seperti platform Download script ini sebagai perli
sebuah folder dalam path sistem anda dan membuatnya dieksekusi dengan chmod +x
.
Windows : Unduh skrip ini sebagai perli.pl
(perhatikan .pl
ekstensi) ke folder di jalur sistem Anda.
Jika Anda tidak keberatan memanggil Perli sebagai perli.pl
, Anda sudah siap.
Jika tidak, membuat batch file bernama perli.cmd
dalam folder yang sama dengan konten berikut: @%~dpn.pl %*
; ini memungkinkan doa sebagai adil perli
.
perldoc
dari perli
REPL suka 'someCommand ?'
. Sepertinya itu belum diperbarui untuk sementara waktu, apakah Anda masih mempertahankan perli?
perli
belum diperbarui dalam beberapa saat, karena dalam penggunaan pribadi saya, saya belum menemukan masalah, dan beberapa orang lain tampaknya menggunakannya, tetapi, sejauh yang saya tahu, masih berfungsi seperti yang diiklankan.
perl -d
adalah temanmu:
% perl -de 0
re.pl dari Devel :: REPL
Baca-eval-print loop:
$ perl -e'while(<>){print eval,"\n"}'
Perl tidak memiliki konsol tetapi debugger dapat digunakan sebagai satu. Pada prompt perintah, ketik perl -de 1
. (Nilai "1" tidak masalah, itu hanya pernyataan valid yang tidak melakukan apa-apa.)
Ada juga beberapa opsi untuk shell Perl .
Untuk informasi lebih lanjut baca perlfaq3 .
Anda dapat melihat psh di sini: http://gnp.github.io/psh/
Ini penuh pada shell (Anda dapat menggunakannya sebagai pengganti bash misalnya), tetapi menggunakan sintaks perl .. sehingga Anda dapat membuat metode dengan cepat dll.
Gambaran umum Matt Trout mencantumkan lima pilihan, mulai dari perl -de 0
dan seterusnya, dan ia merekomendasikan Reply
, jika ekstensibilitas melalui plugin itu penting, atau tinyrepl
dari Eval::WithLexicals
, untuk solusi minimal, murni-perl yang mencakup dukungan readline dan kegigihan leksikal.
Pembaruan: Sejak itu saya telah membuat REPL yang dapat diunduh - lihat jawaban saya yang lain .
Dengan manfaat tinjau balik:
rlwrap
, yang menyediakan dukungan readline untuk perintah apa pun, Anda dapat menggabungkannya dengan perintah Perl sederhana untuk membuat REPL yang dapat digunakan , dan melakukannya tanpa solusi REPL pihak ketiga.
rlwrap
melalui Homebrew with brew install rlwrap
.rlwrap
melalui manajer paket masing-masing; misalnya, di Ubuntu, gunakan sudo apt-get install rlwrap
.rlwrap
dan perintah Perl.Apa yang TIDAK Anda dapatkan dengan jawaban Ján:
Satu-satunya solusi pihak ketiga yang menawarkan ini (dengan instalasi non-sepele + tambahan, langkah-langkah tidak jelas), adalah psh , tetapi:
belum terlihat aktivitas dalam sekitar 2,5 tahun
fokusnya berbeda dalam hal ini bertujuan untuk menjadi pengganti shell penuh , dan dengan demikian bekerja seperti shell tradisional, yang berarti bahwa ia tidak secara otomatis mengevaluasi perintah sebagai pernyataan Perl , dan memerlukan perintah output eksplisit seperti print
untuk cetak hasil ekspresi.
Jawaban Ján Sáreník dapat ditingkatkan dengan satu cara:
Jika Anda memasang Data::Printer
modul dengan [sudo] cpan Data::Printer
sebagai operasi satu kali, Anda dapat memuatnya ke dalam REPL untuk penggunaanp()
fungsi, yang Anda dapat lewati daftar / array / hashtables untuk enumerasi.
Berikut ini adalah alias bernama iperl
dengan readline dan Data::Printer
dukungan , yang dapat Anda masukkan ke file inisialisasi shell mirip POSIX Anda (mis., ~/.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()//$@'\'
Misalnya, Anda dapat melakukan hal berikut untuk mencetak semua variabel lingkungan melalui hashtable %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Seperti halnya jawaban Ján, hasil skalar dari ekspresi dicetak secara otomatis ; misalnya:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Cari juga ptkdb di CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia dan PDE juga memiliki REPL sendiri (untuk GNU Emacs).
Lihat juga REPL Bergaya (untuk GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Anda dapat melakukannya secara online (seperti banyak hal dalam hidup) di sini:
$ rlwrap perl -d -e 1
Anda akan mendapatkan riwayat dan prompt yang konsisten