执行perl时,'$'转换为'2918 1174 2918'

sre*_*sad 2 perl jquery

我有一个吐出html页面的perl.我想使用jquery操作html页面.我已将所有jquery代码放入字符串并将该字符串放入其中

<script type='javascript'> code </script> 
Run Code Online (Sandbox Code Playgroud)

块.但是当我执行perl时,我的所有$符号都被转换为2918 1174 2918.所以如果我的代码$(".className")现在我得到了2918 1174 2918(".className")

有人可以指导我吗?我的代码如下:

 my $str = "<html><head><script type='text/javascript' src='js/top5jquery-1.6.2.min.js'>";
   $str .="<script type='text/javascript'>$('.submitButton').click(function(){ alert('clicked submit button'); });";
   $str .="</head><body><input type='submit' value='submit' />Submitting</body></html>";

my $file_name = "/mainDirectory/myfile";
my $fh;
open ($fh, "> $file_name") or die "Can not open $file_name to write";
print $fh $str;
close($fh);
Run Code Online (Sandbox Code Playgroud)

mob*_*mob 14

$( 是Perl中的有效变量名.

它表示当前进程的"真实组ID",并包含用户所属的所有组ID的空格分隔列表.

要$(...在插入字符串的上下文中使用Perl中的文字,您需要将其转义,例如:

\$(".classname")
Run Code Online (Sandbox Code Playgroud)


Sin*_*nür 10

您应该将HTML和JavaScript放在模板中以避免这些麻烦.请参阅HTML :: Template,HTML :: Zoom和Template Toolkit,以及Perl的其他模板工具.

您问题的直接解决方案是使用:

my $str = q{<script type='text/javascript'>$('.myClassName')</script>};
Run Code Online (Sandbox Code Playgroud)

要么

my $str = <<'EO_HTML';
<html>
   <head>
     <script type='text/javascript' src='js/top5jquery-1.6.2.min.js'>
     <script type='text/javascript'>$('.submitButton').click(function(){
       alert('clicked submit button'); });
     </script>
   </head>
   <body>
   <input type='submit' value='submit' />Submitting</body>
 </html>
EO_HTML
Run Code Online (Sandbox Code Playgroud)


Toa*_*ast 5

尝试使用'jQuery'而不是'$.' 它具有相同的含义,$只是简写.

  • +1取消downvotes.答案是一个蹩脚的解决方案,但它避免了`$`确实有效,IMO标记这"无用"是不合理的. (5认同)