Как я могу запустить интерактивную консоль для Perl?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
255
задан user2864740 6 February 2015 в 08:52
поделиться

15 ответов

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

perl -de1

, Кроме того, существует Alexis Sukrieh Консольное приложение Perl, но я не использовал его.

288
ответ дан Daniel Papasian 23 November 2019 в 02:46
поделиться

См. также Стильный REPL (для GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod

0
ответ дан 23 November 2019 в 02:46
поделиться

Сепия и PDE имеют также собственный REPLs (для GNU Emacs).

0
ответ дан 23 November 2019 в 02:46
поделиться

Также ищите ptkdb на CPAN: http://search.cpan.org/search?query=ptkdb&mode=all

0
ответ дан runrig 23 November 2019 в 02:46
поделиться

Вы могли изучить psh здесь: http://gnp.github.io/psh/

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

4
ответ дан mklement0 23 November 2019 в 02:46
поделиться

Perl не имеет консоли, но отладчик может использоваться в качестве один. В командной строке, типе perl -de 1. (Значение "1" не имеет значения, это - просто допустимый оператор, который ничего не делает.)

существует также несколько опций для оболочка Perl .

Для получения дополнительной информации читавший perlfaq3.

4
ответ дан Michael Carman 23 November 2019 в 02:46
поделиться

re.pl от Devel:: REPL

6
ответ дан 23 November 2019 в 02:46
поделиться

Я всегда делал:

perl -wlne'eval;print$@if$@'

С 5,10, я переключился на:

perl -wnE'say eval()//$@'
6
ответ дан ysth 23 November 2019 в 02:46
поделиться

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

   perl -d -e 1
14
ответ дан Clinton Pierce 23 November 2019 в 02:46
поделиться

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

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

Hope это помогает!

15
ответ дан meagar 23 November 2019 в 02:46
поделиться

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

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

Тогда я могу использовать мой удар история для возвращения старых команд. Это не сохраняет состояние, как бы то ни было.

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

19
ответ дан Jon Ericson 23 November 2019 в 02:46
поделиться

Я думаю, что Вы спрашиваете о REPL (Чтение, Оцените, Печать, Цикл), интерфейс к жемчугу. Существует несколько способов сделать это:

  • Matt Trout имеет статья , которая описывает, как записать один
  • , Adriano Ferreira описал некоторые опции
  • и наконец, можно скачкообразно двинуться на IRC по irc.perl.org и испытать одного из ботов оценки во многих популярных каналах. Они оценят блоки жемчуга, который Вы передаете им.
20
ответ дан Louis Maddox 23 November 2019 в 02:46
поделиться

Мало того, что Matt Trout писал статью о REPL, он на самом деле записал один - Devel:: REPL

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

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

59
ответ дан Dave Rolsky 23 November 2019 в 02:46
поделиться

perl -d Ваш друг:

% perl -de 0
6
ответ дан Brian Phillips 23 November 2019 в 02:46
поделиться

Я записал сценарий, который я называю "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
35
ответ дан raldi 23 November 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: