2016-10-06 1 views
6

J'essaie d'utiliser IntelliJ Idea pour travailler sur un perl script. J'ai installé le perl plugin pour IDEA ainsi que Strawberry Perl pour Windows (10).Exécution du script Perl dans IntelliJ Idea

La coloration syntaxique et d'autres caractéristiques fonctionnent, mais c'est ce qui se passe lorsque je tente d'exécuter le programme:

Running the Program

Je suis un débutant à Perl, donc je suis toujours en utilisant la commande trucs de ligne et graphiques ASCII. J'espérais simplement lancer, tester et déboguer mes programmes perl dans IntelliJ, mais l'instruction print ne met rien dans cette boîte de dialogue quand perl fonctionne ...

Je peux encore taper des choses dans l'image ci-dessus où le curseur est, et en tapant le mauvais truc peut jeter des erreurs comme il est censé. Donc, <STDIN> semble être correctement mappé, mais <STDOUT> ne l'est pas? Ou est-ce que quelque chose d'autre est mauvais?

Si je copie la commande qu'il montre qu'il est en cours d'exécution à cmd, il fonctionne parfaitement:

Mancala working

Ainsi est-il un moyen de configurer IntelliJ pour obtenir <STDOUT> dans cette boîte de dialogue? Toute aide serait appréciée.


Maintenant, après la réponse de Chankey, j'ai fait un script de test, et que l'on travaille:

Test.pl working

Peut-être que le problème est que j'importé le fichier Perl à partir d'une source externe, et IntelliJ ne réalise pas que c'est un script, ou quelque chose comme ça? Mais si je copie le code dans le nouveau fichier, cela ne fonctionne pas non plus ...

Le test.pl avait une différence: use warnings FATAL => 'all'; au lieu de use warnings;. Lorsque je tente cela, il fonctionne jusqu'à ce que je tape une chaîne dans laquelle est prévu une entrée numérique, puis imprime tout un tas de ce qu'il aurait dû être l'impression tout au long qu'il quitte le programme:

Some of the output shown now

Encore une fois, la sortie fonctionne bien dans cmd, donc je pense que c'est un problème avec IntelliJ. Des idées? Peut-être que les symboles @ créent des problèmes? Autre chose? Si quelqu'un utilise IDEA pour Windows et veut jouer avec mon code, il est disponible sur github.

+0

'' imprimer ne va à STDOUT "stuff", non? – Menasheh

+0

La syntaxe générale de print est 'print FILEHANDLE LIST'. Si FILEHANDLE est omis, il imprime la dernière poignée de sortie sélectionnée (voir select). Donc, sauf si vous avez changé FILEHANDLE en utilisant 'select', alors il affichera par défaut FILEHANDLE qui est STDOUT. –

Répondre

1

Fonctionne bien pour moi.Voici les étapes:

  1. Créer un projet
  2. Faites un clic droit sur le projet et sélectionnez New, puis sélectionnez Perl5 file
  3. Donnez un nom à fichier et sélectionnez Script dans la liste déroulante
  4. Ecrivez votre script, enregistrez-
  5. Press CTRL+SHIFT+F10
  6. fournissent certaines données en entrée d'utilisateur, puis appuyez sur Enter

Sortie:

enter image description here

Si cela ne fonctionne pas pour vous, alors vous avez peut-être pas configurer votre Perl correctement.

Passez à File->Project Structure et ajoutez perl à Project SDK.

enter image description here

Selon votre capture d'écran, je peux voir que vous utilisez pour absolute pathperl.exe. Cela signifie que vous n'avez pas ajouté perl à votre PATH. Cela semble être la raison pour laquelle IntelliJ ne le trouve pas pour exécuter votre script.

Do

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

Si cela ne résout pas aussi le problème pour vous allez ensuite à travers le wiki page of Camelcade plugin. L'auteur a fourni des instructions étape par étape sur la façon d'installer ce plugin.

+0

Y at-il un moyen que je peux utiliser Cygwin au lieu de Strawberry Perl? – AbhiNickz

+0

Vous utilisez également le chemin absolu pour perl, mais vous êtes sous Linux, vous ne pouvez donc pas répondre correctement à la question, car vous n'utilisez pas Perl Strawberry. Je suis sur Windows, si ce n'était pas évident. Où "faites-vous" 'définir PATH = C: \ Strawberry \ perl \ bin;% PATH%'? – Menasheh

+2

@abhinickz Dans intellij? Peut-être devriez-vous vous poser cette question séparément? – Menasheh

0

Essayez d'ajouter:

$| = 1; 

... en haut de votre script. Les tampons Perl stdout, l'ajout de $| = 1; provoque le vidage immédiat du tampon et devrait afficher la sortie de vos instructions print dans la console de débogage IntelliJ.

Voir aussi:

perl $|=1; What is this?