Відповіді:
Ви можете використовувати налагоджувач 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з perliREPL, як '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Ви отримаєте історію та послідовну підказку