윈도우즈(Windows 95/98/2000/NT)를 사용하시는 분은 펄스크립트를 FTP로 파일을 전송할 때 반드시 아스키 모드로 해야합니다. 유닉스와 도스는 텍스트 파일을 표현하는 형식이 다르기 때문에 파일포맷을 바꿔주어야 합니다. 만일 바이너리 모드로 전송했을 경우 "Internal Sever Error" 라는 메세지를 출력합니다.




펄스크립트에는 항상 맨 첫줄에 펄 프로그램을 수행할 서버 내의 펄 경로를 지정해 줍니다. 펄 경로가 맞지 않으면 프로그램을 수행할 수 없으므로 서버에러 메세지를 출력합니다. 대부분의 경우 #!/usr/bin/perl 또는 #!/usr/local/bin/perl 이며 서버의 종류에 따라 다른 경로일 수도 있습니다.

확인방법은 텔넷으로 로긴하셔서 'which perl' 또는 'whereis perl' 이라는 명령어를 입력하고 엔터키를 치면 경로를 확인할 수 있습니다. 텔넷계정이 없는 분은 시스템 관리자에게 문의해야 합니다.




펄스크립트의 확장자가 *.cgi 인 경우 실행 파일이므로 읽기(read)와 실행(execute)권한이 있어야 합니다. 다음은 텔넷과 FTP를 이용한 퍼미션 설정 방법입니다.

<텔넷> 의 경우: 'chmod 755 myscript.cgi' 의 명령어를 이용하세요.
의 경우: 파일소유자-읽기/쓰기/실행, 그룹-읽기/실행, 다른사용자-읽기/실행 의 모드로 전환해주세요.




Perl에서는 @ $ " ; & 등의 특수문자들을 문법의 일부로 사용합니다. 펄에서 쓰는 특수문자를 브라우져를 통해 일반 문자로 인식 시키려면 반드시 문자 앞에 백슬래쉬(backslash, \)를 붙여줘야 합니다.

가장 흔히 에러가 나는 경우는 전자우편 주소, 예를 들어 myemail@email.com 이면 myemail\@email.com 으로 해주어야 하고 HTML 태그를 쓸 때, href="http://happycgi.com" 이면 href=\"http://happycgi.com\" 으로 해주어야 에러가 나지 않습니다.

특수문자 처리나 문법에 에러가 있을 경우 찾는 것은 하기싫은 작업 중 하나입니다. 이 경우에 텔넷으로 로긴해서 perl myscript.cgi 라고 입력하면 에러가 있는 부분을 표시해줍니다.



에러메세지가 "prematured script" 라고 표시될 경우에는 파일전송이 성공적으로 되지 않은 경우입니다. 이 경우에는 파일을 다시 전송해서 덮어쓰면 되겠습니다.




서버에서 사용자에게 CGI 접근을 허용하지 않는 경우입니다. 대부분 호스팅업체는 CGI 접근은 허용할 경우는 Perl을 제공하고 설치정보를 미리 알려주거나 홈페이지에 수록하고 있습니다. 그렇지 않을 경우 호스팅을 하는 시스템 관리자에게 문의하시기 바랍니다.



자신의 계정의 CGI 사용여부를 테스트해보시려면 test_cgi.txt를 클릭하고 브라우져에서 '다른 이름으로 저장(save as)'을 선택하고 "test.cgi"로 저장합니다. (익스플로러 사용자는 클릭후 소스보기를 하십시오)
test.cgi 파일을 FTP로 자신의 계정에 아스키 모드로 업로드 합니다.
test.cgi의 퍼미션을 755로 바꿉니다. (chmod 755 test.cgi)
브라우져에서 정확한 URL을 입력하고 엔터키를 칩니다. (http://www.mysite.com/~myid/cgi/test.cgi)
서버에러가 나는 경우 펄 경로를 #!/usr/bin/perl 또는 #!/usr/local/bin/perl 바꿔가면서 테스트합니다. 금지(forbidden) 메세지가 나오면 Perl을 사용할 수 없거나 사용자 디렉토리에서 CGI 사용을 허용하지 않는 경우입니다.