【问题标题】:perl Use of uninitialized value inside a printperl 在打印中使用未初始化的值
【发布时间】:2022-06-27 21:58:42
【问题描述】:

我在 web 服务器后面有一个 perl 代码,我将 perl 脚本与纯 html 结合起来,重要的部分如下所示:

#!/usr/local/bin/perl

use strict;
use warnings;

print "Content-type: text/html\n\n";
print <<ENDHTML;
<!DOCTYPE html>
<html lang="hu">
        <head>
    ...
        </head>
        <body class="landing">
        ...
                <section class="feature 6u$ 12u$(small)">
                <h3 class="title">some title</h3>
        <p>some text</p>
        </section>
        ...
    </body>
    </html>
ENDHTML

当有人打开网页时,这个错误信息会出现在日志中:

2022/06/27 13:28:44 [error] 7811#100158: *106 FastCGI sent in stderr: "Use of uninitialized value $12 in concatenation (.) or string at /path/to/file/index.pl line 78.

我知道这是因为use warnings;,如果我禁用它,那么日志中不会出现任何内容。但是,如果我可以忽略从 print &lt;&lt;ENDHTML;ENDHTML 的脚本部分,那就太好了,因为它们是 html 代码的一部分。有没有办法做到这一点,我也可以use warnings;

【问题讨论】:

    标签: html perl


    【解决方案1】:

    这是您的 heredoc 字符串中的美元符号。 Perl 认为这些是变量。

                    <section class="feature 6u$ 12u$(small)">
    

    你需要像这样逃避它们:

                    <section class="feature 6u\$ 12u\$(small)">
    

    虽然我想知道那是什么类型的 HTML。您不能将美元符号和括号用作类名。

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2015-06-03
      • 2016-09-25
      • 2013-04-08
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多