2017-11-17 1 views
0

"HTML 생성 기능"을 피하는 것이 효과적이지 않습니다.

"안녕하세요 펄"perl이 "HTML 생성 기능"을 피함

그러나 perldoc을 조언을 : 예상대로 내가

#!/usr/bin/perl 

print "Content-type:text/html\r\n\r\n"; 
print '<html>'; 
print '<head>'; 
print '<title>Hello Perl</title>'; 
print '</head>'; 
print '<body>'; 
print '<h2>Hello perl</h2>'; 
print '</body>'; 
print '</html>'; 

내 브라우저 인쇄를 내 로컬 호스트에 펄 스크립트를 시작하면
"HTML 생성 기능은 더 이상 사용할 수없는 ".
그래서 객체 지향 cgitutorial-script (perl, v5.10.0)를 시도했습니다.

#!/usr/bin/perl -w 
use CGI; 
$q = new CGI; 
print $q->header, 
$q->start_html('hello world'), 
$q->h1('hello world'), 
$q->end_html; 

브라우저는 내가

$perl mycgi.pl 

와 터미널에 위의 스크립트를로드하는 경우

"내부 서버 오류"

그것이 예상되는 결과를 보여줍니다

Content-Type: text/html; charset=ISO-8859-1 

<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> 
<head> 
<title>hello world</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
</head> 
<body> 
<h1>hello world</h1> 
</body> 
</html> 

무엇이 실종 됐습니까? 귀하의 코멘트에서

+1

거기에 여분의't'가 무엇입니까? – mwp

+6

[_HTML 생성 함수는 더 이상 사용하지 않아야합니다] (http://search.cpan.org/~leejo/CGI-4.37/lib/CGI.pod#HTML_Generation_functions_should_no_longer_be_used)는 CGI 함수를 사용하지 마십시오. '$ q-> start_html (...)'과 같은 것입니다. 이들은 HTML을 생성하는 함수입니다. ;-) CGI의 [대안] (http://search.cpan.org/~leejo/CGI-Alternatives-0.15/lib/CGI/Alternatives.pm)에서 [Mojolicious] (http : //mojolicious.org/) 또는 [Dancer2] (http://perldancer.org/) 또는 [Catalyst] (http://www.catalystframework.org/). 일단 그들과 함께 시작하면, 당신은 그것을 좋아할 것입니다. 약속 했어. – PerlDuck

+3

첫 번째 스크립트는 HTML을 직접 작성합니다. 그것은 HTML 생성 함수를 사용하는 것이 아닙니다. 두 번째 것은 그들을 사용합니다. 나는 첫 번째 버전을 선호 하겠지만 여전히 추악합니다. SawyerX의 [lightning talk] (https://www.youtube.com/watch?v=jKOqtRMT85s)를 시청하시기 바랍니다. – simbabque

답변

2

:

일반적으로 오두막 라인에 문제가 있음을 나타냅니다

(8)Exec format error: exec of '/Library/WebServer/perling/mycgi.pl' failed

. 당신의 프로그램의 첫 번째 라인에 속삭이는가요? 실제로 존재하는 실행 파일을 가리 킵니까? 라인 끝에 쓸모없는 보이지 않는 문자가 있습니까? (프로그램이 Windows에서 작성되고 Unix 시스템에서 실행되는 경우가 있습니다.)

+0

코드는 위 스레드의 목록입니다. 그러나 커맨드 라인에서 내가 얼마나 슬픈 지 예상되는 결과가 나온다. mycgi.pl에서 코드를로드하지 않는 것은 브라우저 사이트입니다. –

+1

@StephenSt : 물론 'perl mycgi, pl'로 코드를 실행하면 shebang 행이 사용되지 않습니다. 그래서 당신은 나의 이론을 강화하고 있습니다. 거기에는 잘못된 것이 있습니다. 당신이 내 다른 질문에 대답한다면, 우리는 당신을 도울 수있을 것입니다. –

+1

그건 당황 스럽네. 미안. 그것은시 뱅 라인의 시작 부분이었습니다. 절대로, 양해 해 주셔서 감사합니다. –

관련 문제