¶óÀ̺귯¸®´Â ÀÚÁÖ »ç¿ëµÇ´Â ¼ºê·çƾÀ» ¸ð¾Æ³õÀº °ÍÀÌ´Ù. ÆÞ¿¡¼´Â ¼¼°¡Áö ÇüÅÂÀÇ ¶óÀ̺귯¸®¸¦ Á¦°øÇÑ´Ù.
ù¹ø°°¡ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ¶óÀ̺귯¸®·Î¼ ¼ºê·çƾ¿¡´ëÇÑ Á¤ÀǸ¦ ¿°ÅÇØ ³õÀº ÇüÅÂÀÇ ¶óÀ̺귯¸®ÀÌ´Ù.
µÎ¹ø°°¡ ¶óÀ̺귯¸®ÀÇ ¼ºê·çƾ¿¡¼ Áö¿ªº¯¼öÀÇ Á¤ÀǸ¦À¯ÁöÇϵµ·Ï º¯°æÇÑ ÆÐÅ°ÁöÀÌ´Ù.
¸¶Áö¸·À¸·Î ¼¼¹ø°´Â ¸ðµâÀÌ´Ù. ¸ðµâÀº ÆÐÅ°Áö¿¡ °³Ã¼ÀÇ °³³äÀ» µµÀÔÇÑ °ÍÀ¸·Î¼ ¸¶Ä¡ °³Ã¼¸¦ ÂüÁ¶Çϵí ÆÞÀÇ º¯¼ö¿Í ÇÔ¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖµµ·Ï ÇÑ °ÍÀÌ´Ù.
ÆÐÅ°Áö¿Í ¸ðµâ¿¡ ´ëÇÑ ³íÀÇ´Â ´ÙÀ½À¸·Î ¹Ì·ç°í ÀÌ Àý¿¡¼´Â ¶óÀ̺귯¸®¿¡ ´ëÇØ ´Ù·ç°Ú´Ù.
¿ä¾à
¶óÀ̺귯¸®´Â ¼ºê·çƾÀÇ ÁýÇÕÀ¸·Î ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î º°µµÀÇ ÆÄÀÏ¿¡ ¼ºê·çƾÀ» µÎ¸éµÈ´Ù.
sub SUBROUTINE1 {
STATEMENT;
}
sub SUBROUTINE2 {
STATEMENT;
}
.
.
.
sub SUBROUTINEn {
STATEMENT;
}
1;
- SUBROUTINE1~n
- ¼ºê·çƾµéÀÇ À̸§
- STATEMENT
- ¼ºê·çƾ¿¡¼ ¼öÇàµÇ¾î¾ßÇÒ ¹®Àå
- 1;
- ¶óÀ̺귯¸®ÀÇ ¸¶Áö¸· ¸®ÅÏ°ªÀ¸·Î ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù.
¼³¸í
1 : $locked = 'N';
2 :
3 : sub print_header {
4 : my ($header)=<<Header;
5 : Content-Type: text/html
6 :
7 : Header
8 : return $header;
9 : }
10 :
11 : sub html_top {
12 : my($title, $style, $class, $jscode, $redirect) = @_;
13 :
14 : my($top) =<<Top;
15 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
16 : <HTML>
17 : <HEAD>
18 : <TITLE>$title</TITLE>
19 :
20 : <LINK REV="made" HREF="mailto:artech\@syscon.soongsil.ac.kr">
21 : <LINK REL="StyleSheet" HREF="$style">
22 : <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-KR">
23 : <META NAME="author" content="Jae-Geun, Kim">
24 : $redirect
25 : $jscode
26 : </HEAD>
27 :
28 : <BODY class=$class>
29 : Top
30 : return $top;
31 : }
32 :
33 : sub html_bot {
34 : my($bot) =<<Bot;
35 : </body>
36 : </html>
37 : Bot
38 : return $bot;
39 : }
40 :
41 : sub print_title {
42 : my(@message) = @_;
43 : $top =<<Top;
44 : <H2 class=h3> $message[0] </H2>
45 : <H2 class=ban> $message[1] </H2>
46 : <hr noshade size=4>
47 :
48 : Top
49 : }
50 :
51 : sub read_parse {
52 : my($buffer, $pair);
53 :
54 : # Query StringÀ» ÀнÀ´Ï´Ù.
55 :
56 : if($ENV{'REQUEST_METHOD'} eq 'GET' || $ENV{'REQUEST_METHOD'} eq 'HEAD') {
57 : $buffer = $ENV{'QUERY_STRING'};
58 : }elsif($ENV{'REQUEST_METHOD'} eq 'POST') {
59 : read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
60 : }else {
61 : print "Off Line Mode - Type: name1=value1&name2=value2\n";
62 : print "Enter: ";
63 : chop($buffer = <STDIN>);
64 : }
65 :
66 : # À̸§-°ªÀ¸·Î ±¸¼ºµÈ form µ¥ÀÌŸ¸¦ ºÐ¸®ÇÕ´Ï´Ù.
67 : my(@pairs) = split(/&/, $buffer);
68 :
69 : foreach $pair (@pairs) {
70 : my($name, $value) = split(/=/, $pair);
71 :
72 : # +¸¦ °ø¹éÀ¸·Î, %HHÇü½ÄÀ» ¿ø·¡ÀÇ °ªÀ¸·Î µÇµ¹¸³´Ï´Ù.
73 : $value =~ tr/+/ /;
74 : $value =~ s/%(..)/pack("C", hex())/eg;
75 : $value =~ s/<!--(.|\n)*-->//g;
76 :
77 : # formÀÇ µ¥ÀÌŸ¸¦ ¿¬°ü¹è¿¿¡ ÀúÀåÇÕ´Ï´Ù.
78 : $FORM{$name} = $value;
79 : }
80 : return %FORM;
81 : }
82 : 1;
¾Õ¿¡¼ ÀÛ¼ºÇÑ ¹æ¸í·Ï¿¡´ëÇÑ ¶óÀ̺귯¸®ÀÇ ¿¹ÀÌ´Ù. À§¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇϱâ À§Çؼ´Â ¾Õ¼ ÀÛ¼ºÇÑ ¼ºê·çƾÀ» º°µµÀÇ ÆÄÀÏ¿¡ ÀúÀåÇÏ¸é µÈ´Ù.
ÇÑ°¡Áö ÁÖÀÇÇÒ °ÍÀº ¶óÀ̺귯¸®´Â ¼ºê·çƾÀÇ Á¤ÀǸ¦ ¸ð¾Æ³õÀº °Í¿¡ ºÒ°úÇÏ´Ù. µû¶ó¼ À§ÀÇ ¶óÀ̺귯¸®¸¦ °¡Á®¿À°Ô µÇ¸é À¯È¿ÄÚµå´Â Çϳªµµ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ºí·¯¿À°ÔµÈ´Ù.
ÀÌ°ÍÀ» ¸·±âÀ§ÇØ ¼ºê·çƾÀÇ Á¦Àϸ¶Áö¸· Çà¿¡ À¯È¿Äڵ带 ¸®ÅÏÇÒ ¼ö ÀÖµµ·Ï
82 : 1;
Äڵ带 »ðÀÔÇß´Ù.
¶óÀ̺귯¸® ºí·¯¿À±â
»ç¿ëÇü½Ä
require './mylib.pl';
¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇÏ´Â ÇÁ·Î±×·¥°ú ¶óÀ̺귯¸®°¡ °°Àº µð·ºÅ丮¿¡ ÀÖ´Â °æ¿ì ¸í½ÃÀûÀ¸·Î ÇöÀç µð·ºÅ丮ÀÓÀ» Ç¥½ÃÇØ¾ß ÇÑ´Ù.
ÁÖÀÇ:
ÇöÀç µð·ºÅ丮ÀÓÀ» ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇÏÁö ¾Ê´Â °æ¿ì ÆÞÀº ÆÞÀÇ Ç¥ÁØ ¶óÀ̺귯¸® °æ·Î¿¡¼ ¶óÀ̺귯¸®¸¦ ã°ÔµÈ´Ù.
require '/home/artech/public_html/mylib.pl';
¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇÏ´Â ÇÁ·Î±×·¥°ú ¶óÀ̺귯¸®°¡ ´Ù¸¥ µð·ºÅ丮¿¡ ÀÖ´Â °æ¿ì ÇØ´ç µð·ºÅ丮ÀÇ Àý´ë °æ·Î¸¦ »ç¿ëÇؼ ¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇÑ´Ù.
push(@INC, '/home/artech/public_html');
require 'mylib.pl';
ÂüÁ¶ÇÏ´Â ¶óÀ̺귯¸®°¡ ¾îµð¿¡ ÀÖµç ¶óÀ̺귯¸®¸¦ ÆÞÀÇ Ç¥ÁØ ¶óÀ̺귯¸® °æ·Î¿¡ µî·ÏÇÏ°í ÇØ´ç ¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇÑ´Ù.
ÁÖÀÇ1:
push´ë½Å¿¡ unshift¸¦ »ç¿ëÇصµ µÈ´Ù. ÀÌ °æ¿ì ÀÚ½ÅÀÌ ÀÛ¼ºÇÑ ¶óÀ̺귯¸®°¡ Ç¥ÁØ ¶óÀ̺귯¸®º¸´Ù ¸ÕÀú ÂüÁ¶µÈ´Ù.
ÁÖÀÇ2:
require 'mylib.pl'¿¡¼ º¸µí ÇöÀç µð·ºÅ丮ÀÓÀ» Ç¥½ÃÇÏ´Â "./"°¡ »ý·«µÇ¾ú´Ù.
¶óÀ̺귯¸® ÀÛ¼º½Ã À¯ÀÇ»çÇ×
ÀÌ·¸°Ô ÀÛ¼ºÇÑ ¶óÀ̺귯¸®´Â ¾ðÁ¦, ¾îµð¼, ´©°¡ »ç¿ëÇÒÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î ´ÙÀ½ÀÇ ±ÔÄ¢À» ¹Ýµå½Ã ÁöÄÑ¾ß ÇÑ´Ù.
Áö¿ªº¯¼ö »ç¿ë
ÆÞÀº Ưº°ÇÑ ¾ð±ÞÀÌ ¾øÀ¸¸é Ç×»ó Àü¿ªº¯¼ö¸¦ »ç¿ëÇϹǷΠ¶óÀ̺귯¸®¿¡¼ ¾ê±âÄ¡ ¾Ê°Ô Main ·çƾÀÇ º¯¼ö¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ ³Ñ°Ü¹ÞÀº ÀÎÀÚ¸¦ Æ÷ÇÔ, ¼ºê·çƾ¿¡¼ »ç¿ëÇÏ´Â ¸ðµç º¯¼ö´Â Áö¿ªº¯¼ö·Î ¼±¾ðÇØ¾ß ÇÑ´Ù.
12 : my($title, $style, $class, $jscode, $redirect) = @_;
ÀÎÀÚÀÇ Àü´Þ
ÆÞ¿¡¼ ÀÎÀÚÀÇ Àü´ÞÀº @_¸¦ ÅëÇØÀÌ·ç¾î Áø´Ù. @_¸¦ ¹Ù·Î ÂüÁ¶Çϱ⠺¸´Ù´Â ´ÙÀ½°ú °°ÀÌ Àü´Þ ¹ÞÀº ÀÎÀÚ¸¦ Áö¿ªº¯¼ö·Î º¯È¯ÇÏ°í ÀÌ Áö¿ª º¯¼ö¸¦ ¼ºê·çƾ¿¡¼ »ç¿ëÇÑ´Ù.
12 : my($title, $style, $class, $jscode, $redirect) = @_;
&sub(*FORM)°ú °°Àº Çü½ÄÀ¸·Î ¸®Å쵃 º¯¼ö¸¦ È£Ãâ½Ã ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô ÇϱâÀ§Çؼ´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î Áö¿ªº¯¼ö¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù.
sub NAME {
local(*in) = @_;
STATEMENTS;
return *in;
}
°ªÀÇ ¸®ÅÏ
ÆÞ¿¡¼ °ªÀ» ¸®ÅÏÇÏ´Â ¹æ¹ýÀº ¾Õ¼ ¾ê±âÇßµí µÎ°¡Áö°¡ Á¸ÀçÇÑ´Ù. ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇÏ´Â °æ¿ì¿¡´Â °¡±ÞÀû ¸í½ÃÀûÀ¸·Î °ªÀ» ¸®ÅÏÇØ¾ß ÇÑ´Ù.
¿¬½À - ¹æ¸í·Ï
¾Õ¼ ÀÛ¼ºÇÑ ¸ðµç ¼ºê·çƾÀ» mylib.plÀ̶ó´Â ¶óÀ̺귯¸®·Î º¯È¯Ç϶ó.