print 함수와 CGI

print 함수의 쓰임새에 대하여 앞 주제에서 이야기했습니다. 그럼 'CGI 최적' 이라는 PERL언어와 CGI는 어떻게 연관 지을 수 있을까요 ?

저는 여러분이 이미 HTML에 대하여 어느 정도 아시는 것으로 가정합니다. 다만 간단히 소개하면 다음과 같습니다.

여러분의 페이지가 다음과 같다고 하지요. 그곳에 접속한 사용자는 마우스를 이용하여 어떤 하이퍼 텍스트를 딸깍댑니다. 사용자의 웹 브라우저(클라이언트)는 여러분의 서버에 해당 파일을 보내 줄것을 요청합니다. 서버는 그 파일이 HTML 이나 이미지 등이면 파일을 보내주고 exe, pl 또는 cgi확장자를 가지고 있는 파일이면 그것을 서버상에서 실행을 시킨 후 그 출력물을 클라이언트에 보냅니다. 물론 여러분의 Windows NT, Windows 95나 OS/2 등에서 움직이고 있는 서버(WebSite, IIS 등)는 확장자 가 pl인 PERL의 소스 파일을 보면 perl.exe를 구동시켜 실행시킬 것입니다. (만일 그렇지 않다면 확장자가 pl인 파일은 파일내용 그대로 보내질것입니다.) unix 계열에서는 chmod명령으로 PERL 파일의 모드를 (755로)바꾸어 실행 파일로 설정 하여 주어야 합니다. (자세한 웹서버 설정은 이 곳의 주제가 아닙니다. 각각의 웹서버 매뉴얼을 찾아보시기 바랍니다. 혹은 웹서버 관리자에게 물어 보시기 바랍니다.)

<html><head><title>홍길동과 108 장수들</title></head>
<body>
<h1>홍길동과 108 장수들</h1><hr>

나는 홍길동이다.<p>
<a href="strike.pl">한 대 맞아 볼테냐 ?</a><br>
<!-- 물론 htm파일로도 되지만 교육상 ... -->
아프지 ? 우하하하하 !!<P>
</body></html>

위의 HTML을 보고서 한 대 맞고 싶은 사용자는 "한 대 맞아 볼테냐 ?"에 마우스를 대고 똑딱입니다. 그러면 서버는 "strike.pl"파일을 찾아서
perl strike.pl을 실행시킵니다. 물론 perl.exe는 path로 지정되어 있는 경로에 있어야 합니다. strike.pl은 이렇게 생겼을 겁니다. 

 

# strike.pl

print "Content-type: text/html\n\n";
 # 위의 명령행은 반드시 들어가야하는 내용입니다.
 # 그래야 browser가 html 파일임을 알아 볼 테니까요.
print <<endOfHtml;
<html><head><title>사실은 백 아홉대임.</title></head>
<body>
<h2>백 아홉대를 맞아랏 ! </h2><hr>
왜냐하면 홍길동 보태기 백 여덟 장사면 백 아홉명 이니까.<p>
자, 맞아랏 !</p>
endOfHtml

for( $i = 0; $i < 109; $i++ ) # 내용을 109번 반복. 나중에 또 설명.
{
  print "따악 ";
} # 109번을 따악 따악 따악 따악 따악 따악 따악 !!!
print "<p>아프지 ?</p></body></html>";
웹서버 프로그램은 print되는 내용을 browser로 보냅니다. 결과는 상상해 보세요.

일단은 이 정도만 알아 두셔도 될 듯 합니다. 앞으로는 꼭 필요한 경우를 제외하고는 굳이 cgi는 언급하지 않겠습니다.


참고

Perl은 소스파일을 읽어 들인 후 일단 처음부터 끝까지 바이트코드로 번역을 합니다. 그리고는 매우 빠른 속도로 실행을 시킵니다.(Java와 유사한 방식입니다) perl 또는 perl.exe로 실행을 시켜볼 때 실행 직전까지 약간의 멈춤 시간을 느낄 수 있는 것은 바로 완전한 번역을 위해 약간의 시간이 소요되기 때문입니다.
프로그램에 버그가 있을 때는 그 앞의 명령행 어느 하나도 실행되지 않고 즉시 오류 메세지가 나오는 것도 실행 전에 완전히 번역을 해 놓기 때문입니다. 


이전 | 목록 | 다음
Comments