2010-09-14 52 views
-3

我在我的代碼中遇到問題。每當我嘗試插入 一個文本字段,然後它給出一個錯誤。這裏的語法有什麼問題?爲什麼Perl在使用此HTML字符串編譯我的程序期間抱怨語法錯誤?

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>"; 
+0

它不能很好地抱怨編譯之前或之後的語法錯誤。 :)記得要顯示你得到的錯誤信息。在這裏看到問題是微不足道的,但有時並非如此。 – 2010-09-14 10:39:15

+2

此外,您的大部分痛苦來自將HTML嵌入到您的源代碼中,而不是模板文件中。 – 2010-09-14 10:42:03

+0

模板文件?可以請你幫我知道更多關於thos模板文件..任何網站或任何鏈接,如果我可以通過... – sonya 2010-09-14 10:48:48

回答

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>"; 

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>'; 

注:我不得不改變單引號的風格屬性,這裏的雙引號。

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 

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>]; 

但是像你這麼多的問題,真正的解決方案是使用templating system

+0

A milion感謝您的Davorg先生,我的代碼正在按照我希望的方式工作......非常感謝。 – sonya 2010-09-14 10:28:47

+0

如果我的回答對您有用,那您爲什麼不投票呢? – 2010-09-14 10:55:04

+0

很抱歉,先生,我不知道那..am新的論壇,所以我不能識別它...我已經標記了現在.. – sonya 2010-09-14 11:10:45

4

你需要逃避了不少"

嘗試:

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>"; 

一個更好的選擇是使用一個定界符爲:

$table = << "TABLE"; 
<table> 
<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> 
</table> 
TABLE 
print $table; 
0

你需要逃脫雙引號使用「\」。對於更大的琴絃,我建議你使用HEREDOC

例如爲:

print "My string contains quite some \"double quotes\""; 
+2

使用替代引用。 :) – 2010-09-14 10:39:52

+0

哦好吧謝謝你的信息Mr.halfdan ... – sonya 2010-09-14 11:15:37

相關問題