【问题标题】:Perl (use CGI) Can't call method "header" without a package or object referencePerl(使用 CGI)不能在没有包或对象引用的情况下调用方法“头”
【发布时间】:2017-06-13 16:09:13
【问题描述】:

好吧,十年来第一次使用 Perl,有点生疏。从那时起可能会考虑一些更新(天才吧?)

好的,这是 Perl 5,版本 16,subversion 3 x86_64-linux-thread-multi,在 AWS micro 上有 29 个注册补丁。

Perl 自带的,我只是 yum 安装了 perl-CGI perl-Data-Dumper

#!/usr/bin/perl
use CGI;                                        # load cgi routines
my $q = CGI>new;                                # cgi object
print   $q->header(),
        $q->start_html("Hello World"),
        $q->h1('Hello'),
        $q->end_html;
~

当我一点一点地构建程序时,这似乎是一个简单明了的事情。但是如果我在命令行(或浏览器)上运行它会出错。

在创建第 4 行时,如果没有包或对象引用,则无法调用方法“header”。

第 4 行是打印 $q->header(); “create”是文件名。

有什么想法吗?让我了解 Perl 2017 的最新动态?我的问题,生锈总是非常简单。

【问题讨论】:

  • “让我了解 Perl 2017 的最新情况?” — use strict; use warnings;(嗯,这是 Perl 2000,尽管它在 2017 年仍然适用)& metacpan.org/pod/distribution/CGI/lib/…
  • @Quentin:关于从核心中删除 CGI 的观点是没有实际意义的。他使用的是 Red Hat 版本的 Linux,所以无论如何都没有包含在内。
  • 如果 CGI 已被移除,是否有更好的库?我不太喜欢 CGI,我有自己的 html 库。
  • CGI 仍然有效。而且,正如您所见,即使它不是标准安装的一部分,您也可以轻松安装该模块。但请不要使用 CGI.pm 中的 HTML 生成功能。最好使用templating system 将您的 HTML 与您的代码分开。如果您想在 Modern Perl Web Dev 的道路上走得更远,请从阅读 CGI::Alternatives 开始。
  • 太好了,那我应该使用 CGI 进行 PUSH 和 GET 吗?你说不用于 HTML 生成,所以我询问它应该用于什么。

标签: perl oop cgi


【解决方案1】:

看起来像是一个错字。

my $q = CGI>new;

应该是

my $q = CGI->new;

Perl 将您的代码解释为:

my $q = 'CGI' > 'new';

所以你最终会在$q 中得到一个错误值(可能是一个空字符串)。而且你不能在空字符串上调用方法:-)

【讨论】:

  • 是的。当!谢谢..我花了两个小时才发帖。
  • 谢谢,我知道我会觉得很简单。现在得到了网络服务器拒绝的权限,尽管这是一个不同的问题。
  • 我应该删除这个问题,我不应该......不过谢谢。
  • 啊,我偶尔简单的一个不可删除的例子。
猜你喜欢
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多