2013-04-07 45 views
-1

您好我刚才说的IF条件为我的源从那以后,我正在错误为什么我的Perl脚本在EOF之前的任何地方给出错误“无法找到字符串终止符”_HTML_“?

“EOF之前的任何地方无法找到字符串结束_HTML_

但它的工作原理,如果我删除IF

我是新的Perl和CGI,我不知道如何解决这个错误。

这里是我的代码:

#!"\xampp\perl\bin\perl.exe" 

use CGI qw/:standard/; 
use CGI::Cookie; 

%cookies = CGI::Cookie->fetch; 
$Cookie = $cookies{'USER'}->value; 


if ($Cookie) 
{ 

    print "Content-type: text/html\n\n"; 
    print<<_HTML_; 

    <!DOCTYPE html> 
    <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 lt8"> <![endif]--> 
    <!--[if IE 7 ]> <html lang="en" class="no-js ie7 lt8"> <![endif]--> 
    <!--[if IE 8 ]> <html lang="en" class="no-js ie8 lt8"> <![endif]--> 
    <!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]--> 
    <!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]--> 
     <head> 
      <meta charset="UTF-8" /> 
      <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> --> 
      <title>Login and Registration Form with HTML5 and CSS3</title> 
      <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

      <link rel="shortcut icon" href="../favicon.ico"> 
      <link rel="stylesheet" type="text/css" href="css/loginpage.css" /> 
      <link rel="stylesheet" type="text/css" href="css/style.css" /> 
      <link rel="stylesheet" type="text/css" href="css/animate-custom.css" /> 
     </head> 
     <body> 
      <div class="container"> 
       <header> 
        <h1>User's Login Panel</h1> 

        <span>Enter your details below</span> 
       </header> 
       <section>    
        <div id="container_demo" > 

         <a class="hiddenanchor" id="toregister"></a> 
         <a class="hiddenanchor" id="tologin"></a> 
         <div id="wrapper"> 
          <div id="login" class="animate form"> 
           <form action="/cgi-bin/Project/logincheck.pl" method="post" autocomplete="on"> 
            <h1>Log in</h1> 
            <p> 
             <label for="username" class="uname" data-icon="u" > Your email or username </label> 
             <input id="username" name="username" required type="text" placeholder="myusername or [email protected]"/> 
            </p> 
            <p> 
             <label for="password" class="youpasswd" data-icon="p"> Your password </label> 
             <input id="password" name="password" required type="password" placeholder="eg. X8df!90EO" /> 
            </p> 
            <p class="keeplogin"> 
             <input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping" /> 
             <label for="loginkeeping">Keep me logged in</label> 
            </p> 
            <p class="login button"> 
             <input type="submit" value="Login" /> 
            </p> 
            <p class="change_link"> 
             Trouble Logging in? 
             <a href="#toregister" class="to_register">Reset Your Password </a> 
            </p> 
           </form> 
          </div> 

          <div id="register" class="animate form"> 
           <form action="mysuperscript.php" autocomplete="on"> 
            <h1>Trouble Logging In?</h1> 

            <p> 
             <label for="emailsignup" class="youmail" data-icon="e" > Your email</label> 
             <input id="emailsignup" name="emailsignup" required type="email" placeholder="[email protected]"/> 
            </p> 

            <p class="forgotpass "> 
             <input class="buttonpass" type="submit" value="Send Password Reset Instructions"/> 
            </p> 
            <p class="change_link"> 
             Oh Wait My Brain Cells Started Tickling! 
             <a href="#tologin" class="to_register"> Go and log in </a> 
            </p> 
           </form> 
          </div> 

         </div> 
        </div> 
       </section> 
      </div> 
     </body> 
    </html> 

    _HTML_ 
} 
exit; 
+0

不要将原始HTML添加到您的Perl代码中。使用模板引擎。 – 2013-04-07 17:13:05

回答

6
_HTML_ 
} 
exit; 

应该

_HTML_ 
} 
exit; 

但是,请不要在if的中间放置了一大块HTML。

作为一个稍微更好的选择,这样做:

use constant _HTML_ => <<_HTML_; 
    <!DOCTYPE html> 
    <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 lt8"> <![endif]--> 
... 
_HTML_ 

作为一个更好的选择,从内容完全独立的代码。

+0

工作@Sinan非常感谢! 但问题是,我现在得到这个错误: 无法在C:/xampp/htdocs/Project/index.pl第10行的未定义值上调用方法“值” 我正在从' $ Cookie = $ cookies {'USER'} - > value;' 但不知道最新错误 – 2013-04-07 10:32:29

+0

您应该为新问题开一个新问题。 – 2013-04-07 16:36:43

4

的HEREDOC查找在整条生产线的匹配。它不会忽视领先空间。你需要:

print<<_HTML_; 
     bla 
_HTML_ 

您也可以使标签/空间HEREDOC字符串的一部分:

print<<" _HTML_"; 
     bla 
    _HTML_ 
+1

你是否真的认为推荐OP降低不可否认性是明智的? – 2013-04-07 10:24:40

+1

我认为告诉OP为什么他的代码不工作是明智的。 – Tim 2013-04-07 10:31:53

+0

谢谢@TimN它的工作 – 2013-04-07 10:35:53

相关问题