执行perl时,’$’会转换为’2918 1174 2918′

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

 code  

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

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

  my $str = ""; $str .="$('.submitButton').click(function(){ alert('clicked submit button'); });"; $str .="Submitting"; 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); 

$(是Perl中的有效变量名称。

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

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

 \$(".classname") 

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

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

 my $str = q{}; 

要么

 my $str = <<'EO_HTML';      Submitting  EO_HTML 

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

阅读关于Perl的heredoc语法的这个小教程 。 当您需要插入完整的jQuery代码块时,双引号字符串看起来不实用。