2012-04-24 2 views
0

이 검색 패턴을 디버깅하려고 시도했지만 오류가 종료되지 않았지만 각 루프마다 내 것으로 추측됩니다. 종료되지 않았습니다. 내 코드 하단의 마지막 줄은 160 행입니다. 아무도 내 코드에서 무엇이 잘못되었는지에 대한 힌트를 줄 수 있습니까? 선택 결과의 각 머리글을 인쇄하고 각 행의 각 데이터를 인쇄하여 CGI 페이지에 인쇄하려고합니다.검색 패턴이 Perl로 종료되지 않았습니다.

C : \ XAMPP의 \의 CGI - bin에> 펄 create_report.cgi create_report.cgi 줄에서 종료되지 검색 패턴 (160)

foreach $rpt_sel_output(@desc_origin) 
{ 
($rptid, $servid, $rptcat_id, $desc, $remail_add, $remail_info, $ent_usr, $ent_dte, $up_usr, $up_dte, $fav)=split(",",$rpt_sel_output); 
if($rptid eq 'ReportID') #header rows 
{ 
print"<tr>/n"; 
print"<th>$rptid</th>"; 
print"<th>$servid</th>"; 
print"<th>$rptcat_id</th>"; 
print"<th>$desc</th>"; 
print"<th>$remail_add</th>"; 
print"<th>$remail_info</th>"; 
print"<th>$ent_usr</th>"; 
print"<th>$ent_dte</th>"; 
print"<th>$up_usr</th>"; 
print"<th>$up_dte</th>"; 
print"<th>$fav</th>"; 
print"<tr/>/n"; 
print"</table>/n"; 
next; 
} 
print"<tr>/n";# data from select that was outputed 
print"<td>$rptid</td>"; 
print"<td align 'right'> $servid</td>/n"; 
print"<td align 'right'> $rptcat_id</td>/n"; 
print"<td align 'right'> $desc</td>/n"; 
print"<td align 'right'> $remail_add</td>/n"; 
print"<td align 'right'> $remail_info</td>/n"; 
print"<td align 'right'> $ent_usr</td>/n"; 
print"<td align 'right'> $ent_dte</td>/n"; 
print"<td align 'right'> $up_usr</td>/n"; 
print"<td align 'right'> $up_dte</td>/n"; 
print"<td align 'right'> $fav</td>/n"; 
print"<tr/>/n"; 
} 
} 
print"</table>/n"; 


print"<<FOOTER/n"; 
    </body> 
print</html>FOOTER; 
+0

새 줄에'\ n'을 쓰려고 한 것 같습니다. '/ n'은 특별한 의미가 없습니다. 또한 펄 코드를 편집하기 위해 어떤 텍스트 편집기를 사용합니까? [구문 강조] (http://en.wikipedia.org/wiki/Syntax_highlighting) 기능이 있습니까? – Gowtham

+0

코드의 마지막 세 줄은 [here doc] (http://en.wikipedia.org/wiki/Here_document#Perl)을 사용하는 것처럼 보입니다. 링크를 참조하여 코드를 수정하는 방법을 알아보십시오. – Gowtham

+0

감사합니다 얘들 아. 나는 notepad ++ 및 gedit를 사용하고있다. 편집기는 CGI 스크립팅에 전혀 도움이되지 않습니다. 모든 검은 색 텍스트가 강조 표시되지 않습니다. (추천 텍스트 편집기가 있습니까? – SaintClaire33

답변

0

당신은 하단에 해당 인쇄 문 주위에 따옴표를 놓치고있어. 그들은 다음과 같아야합니다 :

print"<<FOOTER/n"; 
print "</body>"; 
print "</html>FOOTER"; 

아직 그렇지 않다면, 하이 라이터 구문을 가진 편집기를 사용해야합니다. 그들은 이런 문제를 분명히 지적합니다.

검색 패턴에 대해 오류가 발생하는 이유는 / 문자가 정규 표현식 (또는 검색 패턴)을 정의하기 시작했기 때문입니다.

0

당신은 단순히 인쇄를 그리워 ... 적이없는 당신은? 이 함께 스크립트를 완료해야합니다

print"<FOOTER />\n"; 
print"</body>"; 
print "</html>"; 
0

이것은 무엇입니까? 당신의 오류 거짓말 ..

7

난 당신이 인용 히어 닥 스타일을 위해 노력하고 생각하는 곳

</body> 
print</html>FOOTER; 

아마 이것은이지만, 다음과 같아야합니다

print <<FOOTER; 
</body> 
</html> 
FOOTER 

는 당신을 저장합니다 lot of print statements;) 변수 보간이 필요한 경우 heredoc 끝 토큰을 큰 따옴표 (print <<"FOOTER";)로 지정하십시오. 토큰을 단일 따옴표로 붙이면 보간을 방지합니다 (@daxim에 의해 지적됨). heredoc에 대한 자세한 내용은 perlop 또는 JFGI를 참조하십시오.

+1

인용 부호가없는 형식이 이미 삽입되어 있습니다. 보간을 방지하는 작은 따옴표로 묶인 식별자에 대해 말하면 귀하의 의견이 더 적합 할 것입니다. (항상 좋은 스타일입니다. 인용구 식별자] (http://p3rl.org/Perl::Critic::Policy::ValuesAndExpressions:RequireQuotedHeredocTerminator).) – daxim

+0

@ daxim : 힌트를 주셔서 감사합니다. – mpe

관련 문제