0

ここで何が起こっているのか正確にはわからないので、この問題をデバッグするのに苦労しています。これは、html を出力するだけの非常に単純な私の perl スクリプトの例です。

#!/usr/bin/perl -w
use strict;
use warnings;

use HTML::Template;

my $template_object = qq|<html>
<head>
    <title>Test</title>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
    $(function() {  
        alert("here");
    }); 
   </script>
</body>
</html>|;   
my $template = HTML::Template->new(scalarref => \$template_object);

print "Content-type: text/html\n\n";
print $template->output();

問題は、これを実行すると JS アラートが表示されず、ソースを見ると $( 関数に 500 500 が含まれていることです。ソースは IE と FF の両方で次のようになります。

<html>
<head>
    <title>Test</title>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
    500 500function() { 
        alert("here");
    }); 
   </script>
</body>
</html>

それは HTML::Template のものではありません (私はそれなしで試してみましたが、同じ結果が得られました)。

ティア

4

1 に答える 1

3

補間しない引用演算子を使用する必要があります。

my $template_object = q|<html>

500 500は、所属するグループのリストである$(の短縮名であるの補間から来ていました。$GID

于 2013-06-30T11:29:21.080 に答える