2016-10-06 8 views
6

Я пытаюсь использовать IntelliJ Idea для работы на perl script. Я установил perl plugin для IDEA, а также Strawberry Perl для Windows (10).Выполнение скрипта Perl внутри IntelliJ Idea

Подсветка синтаксиса и другие возможности работать, но это то, что происходит, когда я пытаюсь запустить программу:

Running the Program

Я новичок в Perl, поэтому я до сих пор только с помощью команды линейки и графики ASCII. Я надеялся просто запустить, протестировать и отладить мои программы perl в IntelliJ, но оператор print не помещает ничего в это диалоговое окно, когда работает perl ...

Я все еще могу напечатать материал в приведенном выше изображении, курсор, и ввод неправильного материала может вызывать ошибки, как предполагается. Итак, <STDIN>, кажется, правильно отображен, но <STDOUT> нет? Или что-то еще не так?

Если я скопировать команду, что она показывает, что работает в CMD, он отлично работает:

Mancala working

Так есть ли способ настроить IntelliJ, чтобы получить <STDOUT> в этом диалоге? Любая помощь будет оценена по достоинству.


Теперь, после ответа Chankey, я сделал тестовый сценарий, и что один работает:

Test.pl working

Может быть, проблема в том, что я импортировал файл PERL от внешнего источника, и IntelliJ не понимает, что это сценарий или что-то в этом роде? Но если я скопирую код в новый файл, он тоже не работает ...

У теста.pl была одна разница: use warnings FATAL => 'all'; вместо use warnings;. Когда я пытаюсь это, она работает, пока я не ввести строку, в которой, как ожидается, цифровой ввод, а затем выводит целую кучу, что это должно было печатать все вместе, как она завершает работу программы:

Some of the output shown now

Опять же, выход работает отлично в cmd, поэтому я думаю, что это проблема с IntelliJ. Есть идеи? Может быть, символы @ создают проблемы? Что-то другое? Если кто-то использует IDEA для Windows и хочет поиграть с моим кодом, он доступен по адресу github.

+0

'печать "материал"' не ходит в STDOUT, верно? – Menasheh

+0

Общий синтаксис печати - 'print FILEHANDLE LIST'. Если FILEHANDLE опущен, он печатает до последнего выбранного (см. Select) выходного дескриптора. Поэтому, если вы не изменили FILEHANDLE с помощью 'select', тогда он будет печатать по умолчанию FILEHANDLE, который является STDOUT. –

ответ

1

Работает отлично для меня.Ниже приведены шаги:

  1. Создание проекта
  2. правой кнопкой мыши на проект и выберите New, затем выберите Perl5 file
  3. Дайте имя файла и выберите Script из выпадающего списка
  4. Написать свой сценарий, сохраните его
  5. Пресс CTRL+SHIFT+F10
  6. Обеспечить некоторые данные вводимые пользователем, затем нажмите Enter

Выход:

enter image description here

Если он все еще не работает для вас, то, возможно, вы не настроить ваш Perl правильно.

Перейти к File->Project Structure и добавить perl к Project SDK.

enter image description here

Согласно скриншоте я вижу, что вы используете absolute path для perl.exe. Это означает, что вы не добавили perl к вашему PATH. Кажется, это проблема, почему IntelliJ не находит ее для выполнения вашего скрипта.

ли

set PATH=C:\Strawberry\perl\bin;%PATH% 

Если это также не решает проблему для вас затем пройти через wiki page of Camelcade plugin. Автор предоставил пошаговые инструкции о том, как настроить этот плагин.

+0

Есть ли способ использовать Cygwin вместо Strawberry Perl ?? – AbhiNickz

+0

Вы также используете абсолютный путь для perl, но вы используете Linux, поэтому вы не можете ответить на вопрос правильно, поскольку вы не используете Strawberry Perl. Я на окнах, если это не очевидно. Где вы «делаете» 'устанавливаете PATH = C: \ Strawberry \ perl \ bin;% PATH%'? – Menasheh

+2

@abhinickz В intellij? Может быть, вы должны задать этот вопрос самостоятельно? – Menasheh

0

Попробуйте добавить:

$| = 1; 

... в верхней части вашего сценария. Perl-буферы stdout, добавление $| = 1; заставляет буфер сразу скрываться и должен отображать вывод из ваших операторов print в консоли отладки IntelliJ.

Смотрите также:

perl $|=1; What is this?

Смежные вопросы