为什么Perl会在使用此HTML字符串编译程序时抱怨语法错误?

son*_*nya -3 html string perl

我的代码中遇到了问题.每当我尝试插入文本字段时,它就会出错.这里的语法有什么问题?

   print '<table>';
  print "<tr style='background-color:#CDC9C9;'>
<td><A HREF=\"http://localhost/cgi-bin/AddUser.cgi\">ADD</A></td>
<td></td>
<td><b>UserId</b></td>
<td><input type="text" name="UserId"></td>
<td><b>UserName</b></td>
 <td><input type="text" name="User_Name"></td>
 <td><input type="submit" name="Filter" value="Filter">  </td>
  </tr>";
print"</table>"; 
Run Code Online (Sandbox Code Playgroud)

Dav*_*oss 5

如果你有一个双引号字符串,那么它不能包含未转义的双引号(希望是明显的原因).

一些解决方法:

1 /逃避双引号.

print "<tr style='background-color:#CDC9C9;'>
<td><A HREF=\"http://localhost/cgi-bin/AddUser.cgi\">ADD</A></td>
<td></td>
<td><b>UserId</b></td>
<td><input type=\"text\" name=\"UserId\"></td>
<td><b>UserName</b></td>
<td><input type=\"text\" name=\"User_Name\"></td>
<td><input type=\"submit\" name=\"Filter\" value=\"Filter\">  </td>
</tr>";
Run Code Online (Sandbox Code Playgroud)

2 /切换到单引号字符串(因为您的字符串不包含变量或转义序列).

print '<tr style="background-color:#CDC9C9;">
<td><A HREF="http://localhost/cgi-bin/AddUser.cgi">ADD</A></td>
<td></td>
<td><b>UserId</b></td>
<td><input type="text" name="UserId"></td>
<td><b>UserName</b></td>
<td><input type="text" name="User_Name"></td>
<td><input type="submit" name="Filter" value="Filter">  </td>
</tr>';
Run Code Online (Sandbox Code Playgroud)

注意:我必须将style属性中的单引号更改为双引号.

3 /使用here-doc.

print <<END_OF_HTML;
<tr style='background-color:#CDC9C9;'>
<td><A HREF="http://localhost/cgi-bin/AddUser.cgi">ADD</A></td>
<td></td>
<td><b>UserId</b></td>
<td><input type="text" name="UserId"></td>
<td><b>UserName</b></td>
<td><input type="text" name="User_Name"></td>
<td><input type="submit" name="Filter" value="Filter">  </td>
</tr>
END_OF_HTML
Run Code Online (Sandbox Code Playgroud)

4 /选择不同的引用字符.

print qq[<tr style='background-color:#CDC9C9;'>
<td><A HREF="http://localhost/cgi-bin/AddUser.cgi">ADD</A></td>
<td></td>
<td><b>UserId</b></td>
<td><input type="text" name="UserId"></td>
<td><b>UserName</b></td>
<td><input type="text" name="User_Name"></td>
<td><input type="submit" name="Filter" value="Filter">  </td>
</tr>];
Run Code Online (Sandbox Code Playgroud)

但是,与许多问题一样,真正的解决方案是使用模板系统.