Відповіді:
Ви можете використовувати налагоджувач perl у тривіальній програмі, наприклад:
perl -de1
Крім того, є програма консолі Perl Олексія Сукрі , але я не використовував її.
control
+ L
не працює в цьому командному інтерфейсі, як мені оновити екран?
rlwrap
). Всі рішення REPL / консолі сторонніх виробників, в тому числі perlconsole
, громіздкі в установці і часто мають більше обмежень.
perl -de1
схоже, не підтримуються my
змінні, і хеші чомусь також не працюють ...
perlconsole
не страждає від цих проблем.
Метт Траут не тільки написав статтю про REPL, він насправді написав одну - Devel :: REPL
Я трохи використав це, і він працює досить добре, і він знаходиться в активному розвитку.
До речі, я не маю поняття, чому хтось відмовився від особи, яка згадала, що використовує "perl -e" з консолі. Це насправді НЕ ВІДПОВІДЬ, правда, але вона фантастично корисна, і я постійно її використовую.
[sudo] cpan Devel::REPL
не працював для мене, ні на OSX 10.10 (Perl 5.18.2), ні на Ubuntu 14.04 (Perl 5.18.2): я отримую помилки під час виконання роботи зі скаргами на відсутні модулі; встановив один, а потім відмовився після повідомлення про ще один відсутній модуль.
re.pl
автор Метт Траут написав статтю з переліком декількох альтернатив, а сам пропонує використовувати reply
замість re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
Я написав сценарій, який я називаю "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>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Користувачі OSX можуть встановлювати rlwrap
через Homebrew за допомогою brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Я думаю, ви запитуєте про інтерфейс REPL (Read, Evaluate, Print, Loop) для perl. Є кілька способів зробити це:
Я використовую командний рядок як консоль:
$ perl -e 'print "JAPH\n"'
Тоді я можу використовувати свою історію баш для повернення старих команд. Однак це не забезпечує збереження держави.
Ця форма найбільш корисна, коли ви хочете перевірити "одну дрібницю" (наприклад, коли відповідаєте на запитання Perl). Часто я виявляю, що ці команди перекопуються дослівно в сценарій оболонки або makefile.
fish
, вам навіть не потрібні \n
.
Не існує інтерактивної консолі для Perl, вбудованої як Python. Однак ви можете використовувати налагоджувач Perl, щоб робити налагодження пов'язаних речей. Увімкніть його за допомогою опції -d, але, можливо, ви захочете перевірити "man perldebug", щоб дізнатися про це.
Після трохи гуглінгу, існує окремий проект, який реалізує консоль Perl, яку ви можете знайти http://www.sukria.net/perlconsole.html .
Сподіваюсь, це допомагає!
Ви завжди можете просто зайти у вбудований налагоджувач і запустити команди звідти.
perl -d -e 1
Є дві популярні відповіді Perl.
sudo apt-get install libreply-perl
. Тоді його можна запустити, просто набравши reply
термінал.
Я створив perli
, Perl реплєї , який працює на Linux, MacOS і Windows , .
Його фокус - автоматичний друк результатів, зручні пошуки документації та легкий огляд збігів регулярних виразів.
Ви можете побачити скріншоти тут .
Він працює автономно (не має будь-яких залежностей, крім самого Perl), але настійно рекомендується установкаrlwrap
для підтримки редагування командного рядка, постійної історії команд та заповнення вкладок - докладніше читайте тут .
Установка
Якщо у вас інстальовано Node.js:
npm install -g perli
Інакше:
Unix - подібних платформах: Завантажити цей сценарій , як perli
у папку в шляху вашої системи і зробити його виконуваним chmod +x
.
Windows : Завантажте цей скрипт як perli.pl
(зверніть увагу на .pl
розширення) у папку на шляху до вашої системи.
Якщо ви не проти закликати Перлі perli.pl
, ви все налаштовані.
В іншому випадку створіть пакетний файл, названий perli.cmd
у тій же папці із наступним вмістом @%~dpn.pl %*
:; це дозволяє виклику як просто perli
.
perldoc
з perli
REPL, як 'someCommand ?'
. Схоже, він не оновлювався деякий час, хоча ви все ще підтримуєте perli?
perli
не оновлювався деякий час, тому що в особистому використанні я не стикався з жодними проблемами, і мало хто з інших людей, схоже, користується ним, але, наскільки я знаю, він як і раніше працює як рекламований.
perl -d
ваш друг:
% perl -de 0
re.pl від Devel :: REPL
Цикл читання-друку:
$ perl -e'while(<>){print eval,"\n"}'
У Perl немає консолі, але відладчик може бути використаний як один. У командному рядку введіть perl -de 1
. (Значення "1" не має значення. Це просто дійсне твердження, яке нічого не робить.)
Існує також пара варіантів оболонки Perl .
Для отримання додаткової інформації читайте perlfaq3 .
Ви можете заглянути в psh тут: http://gnp.github.io/psh/
Це повна оболонка (ви можете використовувати її замість bash, наприклад), але використовує синтаксис perl .. так що ви можете створювати методи на льоту тощо.
Огляд Метта Траут перераховує п'ять варіантів, і perl -de 0
далі він рекомендує Reply
, якщо розширюваність за допомогою плагінів важлива, або tinyrepl
від Eval::WithLexicals
мінімального, чистого рішення, що включає підтримку читання та лексичну стійкість.
Оновлення: з тих пір я створив REPL, який можна завантажити, дивіться іншу відповідь .
З користю заднього огляду:
rlwrap
, який забезпечує підтримку readline до будь-якої команди, ви можете комбінувати її з простою командою Perl, щоб створити корисну REPL , і таким чином зробити це без сторонніх рішень REPL.
rlwrap
через Homebrew за допомогою brew install rlwrap
.rlwrap
через своїх відповідних менеджерів пакетів; наприклад, на Ubuntu, використовуйте sudo apt-get install rlwrap
.rlwrap
та команди Perl.Що ви НЕ отримуєте з відповіддю Яна:
Єдиним стороннім рішенням, яке пропонує це (з нетривіальною установкою + додаткові, не очевидні кроки), є psh , але:
вона не бачила активності близько 2,5 років
його фокус відрізняється тим, що він має на меті бути повноцінною заміною оболонки , і, таким чином, працює як традиційна оболонка, що означає, що вона не автоматично оцінює команду як Perl- заяву, і вимагає чіткої команди виводу, наприклад, print
щоб роздрукувати результат виразу.
Відповідь Яна Сареніка можна вдосконалити одним способом:
Якщо ви встановите Data::Printer
модуль за [sudo] cpan Data::Printer
допомогою одноразової операції, ви можете завантажити його в REPL для використання p()
функції, до якої ви можете передати списки / масиви / хештелі для перерахування.
Ось псевдонім з іменем iperl
читання та Data::Printer
підтримкою , який ви можете помістити у файл ініціалізації вашого подібного до оболонки 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
Як і у відповідь Яна, скалярний результат виразу автоматично друкується; наприклад:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Також шукайте ptkdb у CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia та PDE також мають власні відповіді (для GNU Emacs).
Дивіться також Стильний REPL (для GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Ви можете це зробити в Інтернеті (як і багато речей у житті) тут:
$ rlwrap perl -d -e 1
Ви отримаєте історію та послідовну підказку