Как запустить интерактивную консоль для Perl? - PullRequest
244 голосов
/ 16 сентября 2008

Как запустить интерактивную консоль для Perl, аналогично команде irb для Ruby или python для Python?

Ответы [ 22 ]

275 голосов
/ 16 сентября 2008

Вы можете использовать отладчик perl в тривиальной программе, например:

perl -de1

В качестве альтернативы есть 1005 * Alexis Sukrieh приложение Perl Console , но я не использовал его.

59 голосов
/ 16 сентября 2008

Мэтт Траут не только написал статью о REPL, но и написал одну - Devel :: REPL

Я немного его использовал, и он работает довольно хорошо, и он находится в активной разработке.

Кстати, я понятия не имею, почему кто-то модернизировал человека, который упомянул использование perl -e из консоли. Это не совсем REPL, правда, но это фантастически полезно, и я использую его постоянно.

34 голосов
/ 16 сентября 2008

Я написал скрипт, который я называю "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
21 голосов
/ 03 апреля 2014

Если вы хотите историю, используйте 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> 
20 голосов
/ 16 сентября 2008

Я думаю, что вы спрашиваете об интерфейсе REPL (Read, Evaluate, Print, Loop) для Perl. Есть несколько способов сделать это:

  • У Мэтта Траута есть статья , которая описывает, как написать одну
  • Адриано Феррейра описал некоторые варианты
  • и, наконец, вы можете зайти на IRC по адресу irc.perl.org и попробовать один из самых популярных ботов на многих популярных каналах. Они оценят куски Perl, которые вы им передадите.
19 голосов
/ 16 сентября 2008

Я использую командную строку в качестве консоли:

$ perl -e 'print "JAPH\n"'

Тогда я могу использовать свою историю bash , чтобы вернуть старые команды. Однако это не сохраняет состояние.

Эта форма наиболее полезна, когда вы хотите проверить «одну маленькую вещь» (например, при ответе на вопросы по Perl). Часто я нахожу, что эти команды дословно записываются в сценарий оболочки или make-файл.

15 голосов
/ 16 сентября 2008

В Perl нет встроенной интерактивной консоли, как это делает Python. Однако вы можете использовать Perl Debugger для отладки связанных вещей. Вы включаете его с помощью опции -d, но, возможно, захотите проверить 'man perldebug', чтобы узнать об этом.

После небольшого поиска в Google есть отдельный проект, который реализует консоль Perl, которую вы можете найти по адресу http://www.sukria.net/perlconsole.html.

Надеюсь, это поможет!

14 голосов
/ 16 сентября 2008

Вы всегда можете просто зайти во встроенный отладчик и запустить оттуда команды.

   perl -d -e 1
11 голосов
/ 06 февраля 2015

Существует два популярных Perl REPL.
1. Devel :: REPL отлично.
2. Но ИМО Ответить лучше.

10 голосов
/ 26 сентября 2015

Я создал perli, REPL Perl , который работает на Linux, macOS и Windows .

Основное внимание уделяется автоматической печати результатов, удобному поиску документации и простоте проверка совпадений регулярных выражений.
Вы можете посмотреть скриншоты здесь .

Он работает автономно (не имеет зависимостей, кроме самого Perl), но установка rlwrap настоятельно рекомендуется , чтобы поддерживать команду строчное редактирование, постоянная история команд и завершение табуляции - подробнее здесь .

Установка

  • Если у вас установлен Node.js:

    npm install -g perli
    
  • В противном случае:

    • Unix -подобные платформы: Загрузите этот скрипт как perli в папку в пути к вашей системе и сделайте его исполняемым с chmod +x.

    • Windows : Загрузите этот сценарий как perli.pl (обратите внимание на расширение .pl) в папку в пути вашей системы.
      Если вы не против вызвать Perli как perli.pl, все готово.
      В противном случае создайте командный файл с именем perli.cmd в той же папке со следующим содержимым: @%~dpn.pl %*; это позволяет вызывать как perli.

...