«$» преобразуется в «2918 1174 2918» при выполнении perl - PullRequest
2 голосов
/ 07 ноября 2011

У меня есть Perl, который выплевывает HTML-страницу.Я хочу манипулировать HTML-страницей с помощью jquery.Я поместил весь код jquery в строку и поместил эту строку в блок

<script type='javascript'> code </script> 

.Но когда я выполняю 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);

Ответы [ 4 ]

14 голосов
/ 07 ноября 2011

$( - допустимое имя переменной в Perl.

Это означает «реальный идентификатор группы» текущего процесса и содержит разделенный пробелами список всех идентификаторов группы.что пользователь принадлежит.

Чтобы использовать литерал $(... в Perl в контексте, где строки интерполируются, вам нужно его экранировать, например:

\$(".classname")
10 голосов
/ 07 ноября 2011

Вы должны поместить свой HTML и JavaScript в шаблон, чтобы избежать подобных неприятностей. См. HTML :: Template , HTML :: Zoom и Template Toolkit , среди других инструментов шаблонов для Perl.

Непосредственное решение вашей проблемы - использовать:

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

или

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
5 голосов
/ 07 ноября 2011

Попробуйте использовать 'jQuery' вместо '$.'Он имеет то же значение, а $ просто сокращение.

3 голосов
/ 07 ноября 2011

Прочтите это небольшое руководство по синтаксису Perl для heredoc .Строки с двойными кавычками не выглядят практичными, когда вам нужно вставить полный блок кода JQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...