【问题标题】:perl TemplateToolkit - Can't locate object method "new" via packageperl TemplateToolkit - 无法通过包找到对象方法“new”
【发布时间】:2010-04-12 09:31:06
【问题描述】:

我继承了一个基于 perl 的 web 项目,我正在尝试设置一个本地测试服务器,以便可以在项目内部进行更改。

服务器架构 Ubuntu 9.10 php 5.2.10 mysql 5.1.37 perl 5.10.0-24ubuntu4

DateTime.pm、TemplateToolkit.pm 等所有依赖模块和包都已安装,但运行应用程序会抛出以下错误消息:

无法在 ../lib//KPS/TemplateToolkit.pm 第 51 行通过包“Template”(也许您忘记加载“Template”?)找到对象方法“new” em>

this所指的代码块是:

sub new {
    return Template->new(
        INCLUDE_PATH => $KPS::Config::templatepath,
        ABSOLUTE     => 1,
        DEBUG        => 1,
    );
}

如果有人能够对此有所了解或指出我正确的方向,将不胜感激。

谢谢

辛诺姆

【问题讨论】:

    标签: perl templates cgi ubuntu-9.10


    【解决方案1】:

    您需要先加载模板工具包,使用:

    使用模板;

    要确保 Template::Toolkit 已正确安装在此系统上,您可以从控制台运行:

    perl -MTemplate -e0

    如果返回没有错误,说明 Template.pm wsa 加载成功;如果没有,它会给你一个错误“Can't locate Template.pm in @INC...”。

    【讨论】:

    • 嗨大卫,感谢您的回复。我添加了使用模板;在没有任何运气的情况下发布之前向有关脚本的负责人。脚本的头部如下:use strict;使用警告;包 KPS::TemplateToolkit;使用模板;使用 KPS::Config;使用 KPS::Globals;谢谢
    • 出于兴趣,从控制台运行类似:perl -MTemplate -e0 - 它会给你任何错误吗?
    • 顺便说一句,我相信 TT 的 new() 方法需要一个参数的 hashref,所以你的调用应该看起来像 Template->new({ ... }) - 这不应该导致错误不过,你看到了。
    • 谢谢一百万,这给了我更多的弹药来打猎。谢谢
    【解决方案2】:

    还有一点需要检查,因为即使您没有正确设置,接受的答案测试也可能会成功;确保模块中的包声明具有正确的路径。场景如下:

    你会的

    use a::b;
    ...
    a::b->new();
    

    然后在 b.pm 你做

    package b;
    

    在你意识到你需要做之前,你可能会不停地敲打你的头

    package a::b;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多