【问题标题】:Executing Perl script inside IntelliJ Idea在 IntelliJ Idea 中执行 Perl 脚本
【发布时间】:2017-02-14 17:05:53
【问题描述】:

我正在尝试使用 IntelliJ Idea 处理 perl script。我为 IDEA 安装了perl plugin,为 Windows (10) 安装了Strawberry Perl

语法高亮和其他功能有效,但是当我尝试运行程序时会发生这种情况:

我是 perl 的初学者,所以我仍然只是使用命令行的东西和 ASCII 图形。我希望在 IntelliJ 中简单地运行、测试和调试我的 perl 程序,但是当 perl 运行时,print 语句没有在此对话框中添加任何内容...

我仍然可以在上图中光标所在的位置键入内容,并且键入错误的内容可能会引发应有的错误。所以<STDIN> 似乎被正确映射,但<STDOUT> 不是?还是有其他问题?

如果我将显示它正在运行的命令复制到 cmd,它会完美运行:

那么有没有办法配置 intellij 在此对话框中获取 <STDOUT>?任何帮助将不胜感激。


现在,按照 Chankey 的回答,我制作了一个测试脚本,并且该脚本有效:

也许问题是我从外部源导入了 perl 文件,而 IntelliJ 没有意识到它是一个脚本,或者类似的东西?但是如果我将代码复制到新文件中,它也不起作用......

test.pl 有一个区别:use warnings FATAL => 'all'; 而不是 use warnings;。当我尝试这个时,它会一直工作,直到我输入一个需要数字输入的字符串,然后在退出程序时打印一大堆本来应该打印的内容:

再次,输出在 cmd 中工作正常,所以我认为这是 IntelliJ 的问题。有任何想法吗?也许@ 符号正在制造问题?还有什么?如果有人在 Windows 上使用 IDEA 并想玩弄我的代码,请访问 github

【问题讨论】:

  • print "stuff" 确实会进入 STDOUT,对吧?
  • 打印的一般语法是print FILEHANDLE LIST。如果 FILEHANDLE 被省略,那么它会打印到最后选择的(参见 select)输出句柄。因此,除非您使用 select 更改了 FILEHANDLE,否则它将打印为默认的 FILEHANDLE,即 STDOUT。

标签: perl intellij-idea strawberry-perl


【解决方案1】:

对我来说很好用。步骤如下:

  1. 创建项目
  2. 右击项目并选择New,然后选择Perl5 file
  3. 为文件命名并从下拉列表中选择Script
  4. 编写脚本,保存
  5. CTRL+SHIFT+F10
  6. 提供一些数据作为用户输入,然后按Enter

输出:

如果它仍然对您不起作用,那么您可能没有正确设置您的 Perl。

转到File->Project Structure 并将perl 添加到Project SDK

根据您的屏幕截图,我可以看到您将 absolute path 用于 perl.exe。这意味着您尚未将perl 添加到您的PATH。这似乎是 IntelliJ 找不到它来执行您的脚本的问题。

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

如果这也不能为您解决问题,请通过wiki page of Camelcade plugin。作者在那里提供了有关如何设置此插件的分步说明。

【讨论】:

  • 有什么办法可以用 Cygwin 代替 Strawberry Perl 吗??
  • 您也在使用 perl 的绝对路径,但您使用的是 linux,因此您无法正确回答问题,因为您没有使用 Strawberry Perl。我在窗户上,如果那不明显的话。你在哪里“做”set PATH=C:\Strawberry\perl\bin;%PATH%
  • @abhinickz in intellij?也许你应该单独问这个问题?
  • @Chankey,请参阅更新的答案。实际上,我最初确实是通过他的指南设置了 perl 插件,但我没有做模块部分。我不明白DTL-fast 是什么,或者为什么它是必要的。我刚刚导入了我的 perl 代码。我不认为这应该对此产生影响,但请告诉我您的想法。
  • @Menasheh 分享脚本并输入数据。
【解决方案2】:

尝试添加:

$| = 1;

...到脚本的顶部。 Perl 缓冲区 stdout,添加 $| = 1; 会导致缓冲区立即刷新,并且应该在 IntelliJ 调试控制台中显示 print 语句的输出。

另见:

perl $|=1; What is this?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多