it-swarm-vi.tech

Làm cách nào tôi có thể bắt đầu bảng điều khiển tương tác cho Perl?

Làm cách nào tôi có thể khởi động bảng điều khiển tương tác cho Perl, tương tự như lệnh irb cho Ruby hoặc python cho Python?

249
ibz

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òn có ứng dụng Perl Console của Alexis Sukrieh , nhưng tôi chưa sử dụng nó.

280
Daniel Papasian

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.

59
Dave Rolsky

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
34
raldi

Nếu bạn muốn lịch sử, hãy sử dụng rlwrap . Đây có thể là ~/bin/ips của bạn, ví dụ:

#!/bin/sh
echo 'This is Interactive Perl Shell'
rlwrap -A -pgreen -S"Perl> " Perl -wnE'say eval()//[email protected]'

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> 
23
Ján Sáreník

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:

  • Matt Trout có một bài báo mô tả cách viết một
  • Adriano Ferreira đã mô tả một số tùy chọn
  • và cuối cùng, bạn có thể truy cập IRC tại irc.Perl.org và thử một trong những bot eval trong nhiều kênh phổ biến. Họ sẽ đánh giá các khối Perl mà bạn chuyển cho họ.
20
amoore

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 bash history để 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 chuyển thành nguyên văn thành tập lệnh Shell hoặc makefile.

19
Jon Ericson

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!

15
Frank Wiles

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
14
Clinton Pierce

Tôi đã tạo perli , a Perl REPL 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 tại đây .

Nó hoạt động độc lập (không có phụ thuộc nào ngoài chính 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ì:

    • Unix - giống như các nền tảng: Tải xuống tập lệnh này dưới dạng perli vào một 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 với chmod +x.

    • Windows : Tải xuống tập lệnh này dưới dạng perli.pl (lưu ý phần mở rộng .pl) vào thư mục trong đường dẫn của hệ thống.
      [.__.] Nếu bạn không phiền gọi Perli là 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 có nội dung sau: @%~dpn.pl %*; điều này cho phép gọi như chỉ perli.

11
mklement0

Có hai REPL phổ biến.

  1. Devel :: REPL là tuyệt vời.
  2. Nhưng IMO Trả lời thì tốt hơn.
11
Eric Johnson

Perl -d là bạn của bạn:

% Perl -de 0
6
Brian Phillips

re.pl từ Devel :: REPL

6
Johny

Vòng lặp đọc-in:

$ Perl -e'while(<>){print eval,"\n"}'
5
KIM Taegyoon

Tôi đã luôn luôn làm:

Perl -wlne'eval;[email protected][email protected]'

Với 5.10, tôi đã chuyển sang:

Perl -wnE'say eval()//[email protected]'
5
ysth

Bạn có thể xem psh tại đây: http://gnp.github.io/psh/

Đó là một bản đầy đủ trên Shell (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.

4
shelfoo

Perl không có bàn điều khiển nhưng trình gỡ lỗi có thể được sử dụng như một bàn điều khiển. Tại một lệnh Nhắc, gõ Perl -de 1. (Giá trị "1" không thành vấn đề, đó chỉ là một tuyên bố hợp lệ không có gì.)

Ngoài ra còn có một vài tùy chọn cho Perl Shell .

Để biết thêm thông tin, hãy đọc perlfaq .

4
Michael Carman

Trong Debian/Ubuntu:

$ Sudo apt-get install libdevel-repl-Perl
$ re.pl

$ Sudo apt-get install libapp-repl-Perl
$ iperl
3
gavenkoa

Cập nhật: Tôi đã tạo một bản tải xuống REPL - 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:

  • Các giải pháp của bên thứ ba được đề cập trong số các câu trả lời hiện có là cồng kềnh để cài đặt và/hoặc không hoạt động mà không -trivial, các bước bổ sung không rõ ràng - một số giải pháp dường như bị bỏ rơi ít nhất một nửa.
  • Một REPLcó thể sử dụng _ cần thư viện readline để hỗ trợ bàn phím chỉnh sửa dòng lệnh và hỗ trợ lịch sử - đảm bảo đây là một điểm rắc rối cho nhiều giải pháp của bên thứ ba.
  • Nếu bạn cài đặt CLI 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 đó thực hiện mà không cần các giải pháp REPL của bên thứ ba. [.__.]
    • Trên OSX, bạn có thể cài đặt rlwrap qua Homebrew với _brew install rlwrap_.
    • Các bản phân phối Linux nên cung cấp 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_.
    • Xem Câu trả lời của Ján Sáreník cho sự kết hợp đã nói của rlwrap và một lệnh Perl.

Những gì bạn KHÔNG nhận được với câu trả lời của Ján:

  • tự động hoàn thành
  • khả năng nhập báo cáo đa dòng

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ó khác ở chỗ nó nhằm mục đích trở thành toàn diện Shell thay thế , và do đó hoạt động giống như Shell truyền thống, có nghĩa là nó không tự động đánh giá lệnh là một Perl câu lệnh và yêu cầu một lệnh đầu ra rõ ràng như print để in kết quả của 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:

  • Theo mặc định, nó in mảng/danh sách/hashtables dưới dạng vô hướng , tức là chỉ in phần tử đếm , trong khi đó sẽ rất hữu ích khi liệt kê các phần tử của chúng thay vào đó.

Nếu bạn cài đặt mô đun Data::Printer với _[Sudo] cpan Data::Printer_ dưới dạng hoạt động một lần, bạn có thể tải nó vào REPL để sử dụng hàm p(), mà bạn có thể chuyển danh sách/mảng/hashtables để liệt kê.

Đây là một bí danh có tên iperl với readline và _Data::Printer_ support , bạn có thể đặt tệp khởi tạo Shell giống như 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()//[email protected]'\'
_

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 hàm băm _%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, vô hướng kết quả của một biểu thức là tự động được in; ví dụ.:

_iperl> 22 / 7  # automatically print scalar result of expression: 3.14285714285714
_
2
mklement0

Tổng quan về của Matt Trout liệt kê năm lựa chọn, từ Perl -de 0 trở đi và anh ấy đề xuất 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 , đối với giải pháp Perl thuần túy, tối thiểu bao gồm hỗ trợ đọc và duy trì từ vựng.

1
Davor Cubranic

Sepia và PDE cũng có REPL riêng (cho GNU Emacs).

0
Johny

Xem thêm Sành điệu REPL (cho GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod

0
Johny

Đồng thời tìm ptkdb trên CPAN: http://search.cpan.org/search?query=ptkdb&mode=all

0
runrig