【问题标题】:"use strict;" line in perl causing a simple print script to fail to run“使用严格;” perl 中的行导致简单的打印脚本无法运行
【发布时间】:2014-06-19 09:44:10
【问题描述】:

我几天前安装了apache和perl,并且已经成功运行了几个脚本,但是在输入“use strict;”之后我一直无法让单个脚本运行。行输入。添加该行后,我看到的只是一个非常通用的“内部服务器错误”,其唯一信息为零。

这是一个给出错误的脚本:

#!/usr/bin/perl

use strict;

print "Content-Type: text/html", "\n\n";

print "Hello World";

找不到其他人有这个问题,真的让我很困惑。可能是我安装 perl 时的一些设置吗?

【问题讨论】:

  • 对我来说运行良好。您是否为脚本设置了执行权限?检查服务器错误日志(如果您有权访问它)以获取有关该问题的更多信息。
  • 您的 apache 错误日志中有什么内容?
  • 这在windows中有必要吗?错误日志显示:[Sat May 03 02:34:14.357924 2014] [cgi:error] [pid 2840:tid 884] (OS 2)系统找不到指定的文件。 :[client 127.0.0.1:53749] 无法创建子进程:720002:cookies.pl [Sat May 03 02:34:14.357924 2014] [cgi:error] [pid 2840:tid 884] (OS 2)系统找不到指定的文件。 :[client 127.0.0.1:53749] AH01223:无法生成子进程:D:/wamp/www/cookies.pl
  • 如果您在 Windows 上,则 #!/usr/bin/perl 将不存在。试试,#!perl
  • @Miller:Windows 上的 Perl 会忽略 shebang 行中可执行文件的路径。它只记录那里指定的任何运行时选项。啊,但我从 ikegami 的评论中看到 Apache 确实 使用了那条线!

标签: perl internal-server-error use-strict


【解决方案1】:

在这种情况下,请务必检查错误日志。让它告诉你出了什么问题。

至少有三种可能:

  1. 脚本不可执行,因此不会运行。 (特定于 Unix)
  2. #!/usr/bin/perl 不存在,因此无法执行。
  3. 您的@INC 搞砸了,所以找不到strict

您的错误日志应该能够相当快地说明它是否是其中之一。

【讨论】:

  • 更改为 #!perl 确实使代码运行!据我了解,windows 完全忽略了这条线。它只被 unix 使用。
  • 可以理解的想法,Windows和Unix之间有很多环境差异。但是,Apache 将尝试表现相同,尤其是在像 shebang 这样基本的东西方面。
  • 我是否正确假设“使用严格;”当它阻止我的脚本工作时,实际上是否按预期工作?我希望错误会出现在内部服务器错误的位置(如果它正在工作),而不仅仅是在服务器日志中。
  • @samsmyname,Windows 不使用它,但您的网络服务器可以。
  • @samsmyname: use strict 将对您显示的脚本产生无效。 Windows 和 Perl 都不会注意到命令行中指定的 perl 可执行文件的路径,但从 ikegami 的评论看来,Apache 确实 使用了这一行。
猜你喜欢
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多