【问题标题】:Perl seems to have broken: "=: not found" and "package: not found"Perl 似乎坏了:“=: not found”和“package: not found”
【发布时间】:2011-07-07 13:28:41
【问题描述】:

我有一个 perl 脚本;在我的个人机器上,运行完全相同版本的 perl (5.10.1),它运行得非常好。但是,在服务器机器上,它不仅不运行,而且给了我奇怪的错误。直到最近它运行良好,我确实检查了所需的软件包是否已安装。

脚本的开头(阻塞的地方):

#!/usr/bin/perl
package Hermes;
$VERSION = 3.5;

use FindBin qw($Bin);
push @INC,$Bin;
push @INC ,"/usr/local/lib/perl5/site_perl/5.10.1/";

require("Hermes_config.pm");
$install_Directory = $Config::install_Directory;
push @INC,$install_Directory; #Fix for running from rc.local

use warnings;
#use strict;
use Safe;
use POE;
use POE::Component::IRC;
use Module::Reload;
use Math::Expression::Evaluator;

输出:

Hermes3.0/hermes3.5.pl: 17: package: not found
Hermes3.0/hermes3.5.pl: 18: =: not found
Hermes3.0/hermes3.5.pl: 20: Syntax error: "(" unexpected

(在程序开始之前有 15 行注释的开源版权声明,因此是行号)。

安装了 POE、Module::Reload 和 Math::Expression::Evaluator(根据 instmodsh),cpan 告诉我 FindBin 是最新的,重新安装 Safe 没有帮助,所以它似乎没有一个丢失的包 - 除此之外,它并没有告诉我丢失的包名称,它似乎被“包”这个词窒息。重新安装 Perl 没有帮助(使用 apt-get install --reinstall perl)。

我最近升级了本机的ubuntu版本;很有可能把事情搞砸了,所以任何关于从哪里开始寻找的提示都将不胜感激。

【问题讨论】:

  • 顺便说一句:您可以通过 perldiag 了解此类错误:perldoc.perl.org/perldiag.html。寻找“未找到”。
  • "push @INC" 不应在前 2 种情况下使用,请参阅 "lib" pragma。
  • 这些不是 perl 的错误。 :)
  • 那里的 lib pragma 有点棘手,因为您必须加载 Hermes_config.pm 才能获得 $Config::install_Directory。我猜你可以将它包装在一个 BEGIN 中,但更好的方法是使用真正的配置文件并设置环境,这样你就不会玩那些游戏了。 :)

标签: perl


【解决方案1】:

问题是 bash 试图运行/编译/解释脚本,而不是 perl。

#! /usr/bin/perl

应该在文件的最顶部,上面不要有任何东西。

【讨论】:

  • 虽然上面的脚本似乎确实有 shebang 行,但我倾向于同意您的回答作为可能的问题。也许 OP 可以通过在命令行上明确说“perl hermes3.5.pl”来运行脚本来证明/反驳理论?
  • 移动 shebang 行显示它现在认为 POE 没有安装,当它很清楚时,我可以在那里看到它。这完全是另一个问题,也是我更熟悉的一个问题。我只是等到它让我接受答案>.>
  • 不确定,也许它会有所帮助并意识到这是一个 Perl 脚本并为您完成了艰苦的工作(您是从命令行运行还是在文件浏览器中双击它?)。但是,您看到的错误消息不是来自 perl 编译器,因此问题不在于您的 perl 安装,而在于数据从未进入 perl。
  • 我从命令行运行,但我正在运行另一个脚本以将其作为守护程序启动,而在本地我使用“perl”运行它。经过更多的研究,这可能解释了这种差异。谢谢。
猜你喜欢
  • 2018-07-18
  • 2021-11-11
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 2021-12-27
  • 2020-06-18
  • 1970-01-01
相关资源
最近更新 更多