Câu trả lời:
Bạn có thể sử dụng trình gỡ lỗi perl trên một chương trình tầm thường, như vậy:
perl -de1
Ngoài ra, có ứng dụng Perl Console của Alexis Sukrieh , nhưng tôi chưa sử dụng nó.
control
+ L
không hoạt động trong giao diện lệnh này, tôi nên làm mới màn hình như thế nào?
rlwrap
). Tất cả các giải pháp REPL / console của bên thứ ba, bao gồm perlconsole
, rất khó cài đặt và thường có nhiều hạn chế hơn.
perl -de1
dường như không hỗ trợ my
các biến và băm cũng không hoạt động, vì một số lý do vì sao
perlconsole
không bị những vấn đề này
Matt Trout không chỉ viết một bài báo về REPL, anh ấy còn thực sự viết một bài - Devel :: REPL
Tôi đã sử dụng nó một chút và nó hoạt động khá tốt, và nó đang được phát triển tích cực.
BTW, tôi không biết tại sao ai đó sửa đổi người đã đề cập bằng cách sử dụng "perl -e" từ bảng điều khiển. Đây thực sự không phải là REPL, đúng, nhưng nó rất hữu ích và tôi sử dụng nó mọi lúc.
[sudo] cpan Devel::REPL
không hiệu quả với tôi, cả trên OSX 10.10 (Perl 5.18.2) cũng như trên Ubuntu 14.04 (Perl 5.18.2): Tôi gặp lỗi khi chạy khiếu nại về các mô-đun bị thiếu; cài đặt một, sau đó từ bỏ sau khi một mô-đun mất tích khác được báo cáo.
re.pl
tác giả, đã viết một bài báo liệt kê một số lựa chọn thay thế, và chính anh ta đề nghị sử dụng reply
thay vì re.pl
: Shadow.cat/blog/matt-s-trout/mstpan-17
Tôi đã viết một kịch bản mà tôi gọi là "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Bất cứ điều gì bạn nhập vào, nó sẽ đánh giá trong 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
Nếu bạn muốn lịch sử, sử dụng rlwrap . Đây có thể là ~/bin/ips
ví dụ của bạn :
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Và đây là cách nó trông như thế nào:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Người dùng OSX có thể cài đặt rlwrap
qua Homebrew với brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Tôi nghĩ rằng bạn đang hỏi về giao diện REPL (Đọc, Đánh giá, In, Lặp lại) cho perl. Có một số cách để làm điều này:
Tôi sử dụng dòng lệnh như một bàn điều khiển:
$ perl -e 'print "JAPH\n"'
Sau đó, tôi có thể sử dụng lịch sử bash của mình để lấy lại các lệnh cũ. Điều này không bảo tồn nhà nước, tuy nhiên.
Hình thức này hữu ích nhất khi bạn muốn kiểm tra "một điều nhỏ" (như khi trả lời các câu hỏi của Perl). Thông thường, tôi thấy các lệnh này được ghi nguyên văn thành tập lệnh shell hoặc makefile.
fish
, bạn thậm chí không cần \n
.
Không có bảng điều khiển tương tác cho Perl được tích hợp như Python. Tuy nhiên, bạn có thể sử dụng Trình gỡ lỗi Perl để gỡ lỗi những thứ liên quan. Bạn bật nó với tùy chọn -d, nhưng bạn có thể muốn kiểm tra 'man perldebug' để tìm hiểu về nó.
Sau một chút loay hoay, có một dự án riêng thực hiện bảng điều khiển Perl mà bạn có thể tìm thấy tại http://www.sukria.net/perlconsole.html .
Hi vọng điêu nay co ich!
Bạn luôn có thể thả vào trình gỡ lỗi tích hợp và chạy các lệnh từ đó.
perl -d -e 1
Có hai REPL phổ biến.
sudo apt-get install libreply-perl
. Sau đó, nó có thể được chạy đơn giản chỉ cần gõ reply
trong một thiết bị đầu cuối.
Tôi đã tạo perli
, một REPL Perl chạy trên Linux, macOS và Windows .
Trọng tâm của nó là in kết quả tự động, tra cứu tài liệu thuận tiện và kiểm tra dễ dàng các kết quả khớp biểu thức chính quy.
Bạn có thể xem ảnh chụp màn hình ở đây .
Nó hoạt động độc lập (không có phụ thuộc nào ngoài bản thân Perl), nhưng cài đặt rlwrap
được khuyến nghị mạnh mẽ để hỗ trợ chỉnh sửa dòng lệnh, lịch sử lệnh liên tục và hoàn thành tab - đọc thêm tại đây .
Cài đặt
Nếu bạn tình cờ cài đặt Node.js:
npm install -g perli
Nếu không thì:
Các nền tảng giống như Unix : Tải xuống tập lệnh này dưới dạng perli
thư mục trong đường dẫn hệ thống của bạn và làm cho nó có thể thực thi được chmod +x
.
Windows : Tải xuống tập lệnh này dưới dạng perli.pl
(lưu ý .pl
phần mở rộng) vào một thư mục trong đường dẫn hệ thống của bạn.
Nếu bạn không phiền gọi Perli như perli.pl
, bạn đã sẵn sàng.
Nếu không, hãy tạo một tệp bó có tên perli.cmd
trong cùng thư mục với nội dung sau : @%~dpn.pl %*
; Điều này cho phép gọi như chỉ perli
.
perldoc
từ perli
REPL như thế nào 'someCommand ?'
. Có vẻ như nó chưa được cập nhật trong một thời gian, bạn vẫn đang duy trì perli chứ?
perli
đã không được cập nhật trong một thời gian, bởi vì trong sử dụng cá nhân của tôi, tôi đã không gặp phải bất kỳ vấn đề nào, và rất ít người khác dường như sử dụng nó, nhưng, theo như tôi biết, nó vẫn hoạt động như quảng cáo.
perl -d
là bạn của bạn:
% perl -de 0
re.pl từ Devel :: REPL
Vòng lặp đọc-in:
$ perl -e'while(<>){print eval,"\n"}'
Bạn có thể xem psh tại đây: http://gnp.github.io/psh/
Đó là một shell đầy đủ (ví dụ bạn có thể sử dụng nó để thay thế bash), nhưng sử dụng cú pháp perl .. để bạn có thể tạo các phương thức một cách nhanh chóng, v.v.
Tổng quan của Matt Trout liệt kê năm lựa chọn, từ đó perl -de 0
trở đi, và ông khuyến nghị Reply
, nếu khả năng mở rộng thông qua các plugin là quan trọng, hoặc tinyrepl
từ Eval::WithLexicals
một giải pháp tối thiểu, thuần túy bao gồm hỗ trợ đọc và kiên trì từ vựng.
Cập nhật: Tôi đã tạo một REPL có thể tải xuống - xem câu trả lời khác của tôi .
Với lợi ích của nhận thức muộn màng:
rlwrap
, cung cấp hỗ trợ đọc cho bất kỳ lệnh nào, bạn có thể kết hợp nó với lệnh Perl đơn giản để tạo REPL có thể sử dụng và do đó không cần giải pháp REPL của bên thứ ba.
rlwrap
qua Homebrew với brew install rlwrap
.rlwrap
thông qua các trình quản lý gói tương ứng của chúng; ví dụ, trên Ubuntu, sử dụng sudo apt-get install rlwrap
.rlwrap
và lệnh Perl đã nói.Những gì bạn KHÔNG nhận được với câu trả lời của Ján:
Giải pháp bên thứ ba duy nhất cung cấp các giải pháp này (với cài đặt không tầm thường + các bước bổ sung, không rõ ràng), là psh , nhưng:
nó đã không thấy hoạt động trong khoảng 2,5 năm
Trọng tâm của nó là khác nhau ở chỗ nó nhằm mục đích là một full-fledged thay thế vỏ , và do đó hoạt động như một lớp vỏ truyền thống, có nghĩa là nó không tự động đánh giá một lệnh như một Perl tuyên bố, và yêu cầu một lệnh đầu ra rõ ràng như print
để in kết quả của một biểu thức.
Câu trả lời của Ján Sáreník có thể được cải thiện theo một cách:
Nếu bạn cài đặt Data::Printer
mô-đun với [sudo] cpan Data::Printer
hoạt động một lần, bạn có thể tải nó vào REPL để sử dụngp()
chức năng, để bạn có thể chuyển danh sách / mảng / hashtables để liệt kê.
Đây là một bí danh có tên là iperl
readline và Data::Printer
hỗ trợ , bạn có thể đặt tệp khởi tạo của shell giống POSIX của mình (ví dụ ~/.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()//$@'\'
Ví dụ: sau đó bạn có thể thực hiện các thao tác sau để in tất cả các biến môi trường thông qua hashtable %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Như với câu trả lời của Ján, kết quả vô hướng của một biểu thức được tự động in; ví dụ:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Đồng thời tìm ptkdb trên CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia và PDE cũng có REPL riêng (đối với GNU Emacs).
Xem thêm REPL sành điệu (đối với GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Bạn có thể làm điều đó trực tuyến (như nhiều thứ trong cuộc sống) ở đây:
$ rlwrap perl -d -e 1
Bạn sẽ nhận được lịch sử và một dấu nhắc nhất quán