ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ
CGI.pmÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ¶§¿¡´Â µÎ°¡Áö ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ, Áï °³Ã¼ ÁöÇâ ½ºÅ¸ÀÏ°ú ÇÔ¼ö ÁöÇâ ½ºÅ¸ÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. °³Ã¼ ÁöÇâ ½ºÅ¸ÀÏ¿¡¼´Â Çϳª ÀÌ»óÀÇ CGI °³Ã¼¸¦ »ý¼ºÇÏ°í ÆäÀÌÁöÀÇ ´Ù¾çÇÑ ¿ä¼Ò¸¦ »ý¼ºÇϱâÀ§ÇØ ¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù. °¢°¢ÀÇ CGI °³Ã¼´Â ¼¹ö¿¡ÀÇÇØ CGI·Î Àü´ÞµÈ ±â¸í ¸Å°³º¯¼öÀÇ ¸ñ·ÏÀ¸·Î ÃʱâÈ µÈ´Ù. »ç¿ëÀÚ´Â ÀÌ °³Ã¼¸¦ º¯°æÇÏ°í À̵éÀ» ÆÄÀÏÀ̳ª µ¥ÀÌŸ º£À̽º¿¡ ÀúÀåÇÏ°í ¶Ç À̵éÀ» ´Ù½Ã »ý¼ºÇÒ ¼ö ÀÖ´Ù. °¢ °³Ã¼´Â CGIÀÇ "»óÅÂ"¿Í »óÀÀÇÏ¸ç °¢°¢ÀÇ °³Ã¼ÀÇ ¸Å°³º¯¼ö ¸ñ·ÏÀº ¼·Î µ¶¸³ÀûÀ̱⠶§¹®¿¡ À̵éÀ» ÀÌ¿ëÇؼ ½ºÅ©¸³Æ®ÀÇ »óŸ¦ ÀúÀåÇÏ°í ³ªÁß¿¡ ´Ù½Ã º¹±¸ÇÒ ¼ö ÀÖ´Ù.
¿¹·Î¼ °³Ã¼ ÁöÇâ ½ºÅ¸ÀÏÀ» »ç¿ëÇؼ "¾È³ç, ±ôÁ÷¾Æ"¸¦ Ãâ·ÂÇÏ´Â HTML ÆäÀÌÁö¸¦ ¸¸µé¾î º¸ÀÚ.
1 : #!/usr/local/bin/perl
2 : use CGI; # CGI ¸ðµâÀ» ÀÐ¾î µéÀδÙ.
3 : $q = new CGI; # »õ·Î¿î CGI °³Ã¼¸¦ »ý¼ºÇÑ´Ù.
4 : print $q->header, # HTTP ÇØ´õ¸¦ »ý¼ºÇÑ´Ù.
5 : $q->start_html('°£´ÜÇÑ ¿¹'), # HTMLÀ» ½ÃÀÛÇÑ´Ù.
6 : $q->h1('¾È³ç, ±ôÂï¾Æ'), # H1 ű׷Π"¾È³ç ±ôÂï¾Æ"¸¦ Ãâ·ÂÇÑ´Ù.
7 : $q->end_html; # HTMLÀ» ´Ý´Â´Ù.
½ÇÇà °á°ú
example2.cgi
ÇÔ¼ö ÁöÇâ ½ºÅ¸ÀÏ¿¡¼´Â ÇϳªÀÇ ±âº» CGI °³Ã¼¸¸ Á¸ÀçÇϸç, ÀÌ °³Ã¼°¡ Á÷Á¢ »ç¿ëµÇ´Â °ÍÀº ¾ÆÁÖ µå¹°´Ù. °³Ã¼¸¦ »ç¿ëÇÏ´Â ´ë½Å¿¡ CGI ¸Å°³º¯¼ö¸¦ º¹¿øÇÏ°í HTML ű׸¦ »ý¼ºÇÏ°í ÄíÅ°¸¦ ó¸®ÇϱâÀ§ÇØ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ¹æ¹ýÀº º¸´Ù ºÐ¸íÇÑ ÇÁ·Î±×·¡¹Ö ȯ°æÀ» Á¦°øÇØ ÁÖÁö¸¸ Çѹø¿¡ ÇϳªÀÇ CGI °³Ã¼¸¸ »ç¿ëÇؾßÇÏ´Â Á¦¾àÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¹´Â À§ÀÇ ¿¹¿Í µ¿ÀÏÇÑ ¿¹ÀÌÁö¸¸ ÇÔ¼ö ÁöÇâ ȯ°æÀ» »ç¿ëÇÏ°í ÀÖ´Ù. ÁÖµÈ Â÷ÀÌ´Â ÇÔ¼öÀÇ ÁýÇÕÀ» À̸§ °ø°£(º¸Åë Ç¥ÁØ ÇÔ¼ö)·Î °¡Á®¿À±â¸¸ ÇÏ¸é µÈ´Ù´Â °ÍÀÌ´Ù. ±»ÀÌ °³Ã¼¸¦ »ý¼ºÇÒ ÇÊ¿ä´Â ¾ø´Ù.
1 : #!/usr/local/bin/perl
2 : use CGI qw/:standard/; # CGI ¸ðµâÀ» ÀÐ¾î µéÀδÙ.
3 : print header, # HTTP ÇØ´õ¸¦ »ý¼ºÇÑ´Ù.
4 : start_html('°£´ÜÇÑ ¿¹'),# HTMLÀ» ½ÃÀÛÇÑ´Ù.
5 : h1('¾È³ç, ±ôÂï¾Æ'), # H1 ű׷Π"¾È³ç ±ôÂï¾Æ"¸¦ Ãâ·ÂÇÑ´Ù.
6 : end_html; # HTMLÀ» ´Ý´Â´Ù.
½ÇÇà °á°ú
example3.cgi
ÀÌ ¹®¼ÀÇ ¿¹´Â ÁÖ·Î °³Ã¼ ÁöÇâ ½ºÅ¸ÀÏÀ» »ç¿ëÇß´Ù. CGI.pm¿¡¼ ÇÔ¼ö ÁöÇâ ½ºÅ¸ÀÏ¿¡´ëÇÑ Áß¿äÇÑ Á¤º¸´Â ÇÔ¼ö ÁöÇâ ȯ°æÀ» »ç¿ëÇϱ⸦ º¸±â¹Ù¶õ´Ù.
CGI.PM ·çƾÀÇ È£Ãâ
´ëºÎºÐÀÇ CGI.pm ·çƾÀº ¿©·¯°¡Áö ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀδÙ. ¶§¶§·Î 20°³ ÀÌ»óÀÇ ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â °æ¿ìµµ ÀÖ´Ù. ÀÌ·¯ÇÑ °ÍÀ» °£´ÜÈ÷ ÇϱâÀ§ÇØ ¸ðµç ·çƾÀº ´ÙÀ½°ú °°ÀÌ ±â¸í ÀÎÀÚ È£Ãâ ¹ýÀ» »ç¿ëÇÑ´Ù.
print $q->header(-type=>'image/gif',-expires=>'+3d');
°¢°¢ÀÇ ÀÎÀÚ À̸§Àº ´ë½¬(-) ´ÙÀ½¿¡ ³ª¿Â´Ù. ÀÎÀÚ ¸ñ·Ï¿¡¼ ´ë¼Ò¹®ÀÚ´Â ±¸ºÐÇÏÁö ¾ÊÀ¸¸ç ¼ø¼ ¿ª½Ã ±¸ºÐÇÏÁö ¾Ê´Â´Ù. Áï, -type, -Type, -TYPE ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ´Ù. »ç½Ç ù¹ø° ÀÎÀÚ¸¸ ´ë½¬(-)·Î ½ÃÀÛÇصµ µÈ´Ù. ù ¹ø° ÀÎÀÚ¿¡ ´ë½¬(-)°¡ Á¸ÀçÇϸé CGI.pmÀº À̾îÁö´Â ÀÎÀÚµµ ´ë½¬°¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÑ´Ù.
´ë½¬¸¦ »ç¿ëÇÏ°í ½ÍÁö ¾Ê´Ù¸é ´ë½¬¸¦ ÀüÇô »ç¿ëÇÏÁö ¾Ê¾Æµµ µÈ´Ù. °³Ã¼¸¦ »ý¼ºÇÑ ÈÄ "0"ÀÌ ¾Æ´Ñ °ªÀ¸·Î use_named_parameters()¸¦ È£ÃâÇÔÀ¸·Î¼ ±â¸í ÀÎÀÚ È£ÃâÀ» »ç¿ëÇÏÁö ¾Ê°Ú´Ù´Â °ÍÀ» CGI.pm¿¡ ¾Ë·ÁÁÙ ¼ö ÀÖ´Ù.
$query = new CGI;
$query->use_named_parameters(1);
$field = $query->radio_group('name'=>'OS',
'values'=>['À¯´Ð½º','À©µµ±×','¸ÆŲÅä½Ã'],
'default'=>'À¯´Ð½º');
¿©·¯ ·çƾµéÀº Åë»ó ÇϳªÀÇ ÀÎÀڷΠȣÃâµÈ´Ù. ÀÌ·¯ÇÑ ·çƾÀÇ °æ¿ì¿¡´Â ÀÎÀÚ À̸§ ¾øÀÌ ÇϳªÀÇ ÀÎÀÚ¸¸ ÁÖ¸é µÈ´Ù.
header()
´Â ÀÌ·¯ÇÑ ·çƾµé Áß ÇϳªÀÌ´Ù. ÀÌ °æ¿ì¿¡ ÇϳªÀÇ ÀÎÀÚ´Â ¹®¼ÀÇ À¯ÇüÀÌ´Ù.
print $q->header('text/html');
´Ù¸¥ ÀÌ·¯ÇÑ ·çƾµéÀº ¾Æ·¡¿¡ ¹®¼ÈµÇ¾î ÀÖ´Ù.
¶§¶§·Î ±â¸í ÀÎÀÚµéÀº ½ºÄ®¶ó¸¦ ÂüÁ¶Çϸç, °¡²û ¹è¿À̳ª ¿¬°ü¹è¿À» ÂüÁ¶ÇÑ´Ù. ¾î¶°ÇÑ ÇüÅÂÀÇ ÀÎÀÚµçÁö Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç, ·çƾÀº Àü´ÞµÈ ÀÎÀÚ°¡ ¹«¾ùÀÌµç °¡Àå Àû´çÇÏ°Ô Ã³¸®ÇÑ´Ù. ¿¹¸¦µé¾î
param()
·çƾÀº Çϳª ¶Ç´Â ¿©·¯ °³ÀÇ °ªÀ¸·Î CGI ¸Å¸Åº¯¼ö¸¦ ¼³Á¤Çϴµ¥ »ç¿ëµÈ´Ù. ´ÙÀ½Àº ÀÌ µÎ °æ¿ì¿¡´ëÇÑ ¿¹ÀÌ´Ù.
$q->param(-name=>'veggie',-value=>'Å丶Åä');
$q->param(-name=>'veggie',-value=>['Å丶Åä','»óÄ¡','°¨ÀÚ','°í±¸¸¶']);
CGI.pmÀÇ ¾ÆÁÖ ¸¹Àº ·çƾµéÀº ¸ðµâ³»¿¡ Ưº°È÷ Á¤ÀǵÇÁö ¾Ê¾ÒÁö¸¸ ÇÊ¿ä½Ã ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÈ´Ù. À̵éÀº µ¿ÀûÀ¸·Î HTML ÆäÀÌÁö¸¦ ¸¸µå´Âµ¥ »ç¿ëµÇ´Â "HTML ¸Þ¼Òµå"µéÀÌ´Ù. HTML ű״ ¼Ó¼º(ÅÂ±× ÀÚü³»¿¡¼ »ç¿ëµÇ´Â ¼Ó¼º=°ªÀÇ ½Ö)°ú ³»¿ë(½ÃÀÛ ÅÂ±×¿Í Á¾·áÅÂ±× »çÀÌ¿¡ Á¸ÀçÇÏ´Â ³»¿ë)À» ¸ðµÎ °®´Â´Ù. ¼Ó¼º°ú ³»¿ëÀ» ±¸ºÐÇϱâÀ§ÇØ CGI.pmÀº ù¹ø° ÀÎÀÚ¸¦ ¿¬°ü¹è¿·Î ÂüÁ¶ÇÔÀ¸·Î¼ HTML ¼Ó¼ºÀ» Àü´ÞÇϸç À̾îÁö´Â ÀÎÀÚ´Â ³»¿ëÀ» ÂüÁ¶ÇÑ´Ù.
ÄÚµå »ý¼ºµÈ HTML
---- --------------
h1() <H1>
h1('¹«½¼','³»¿ëÀϱî?'); <H1>¹«½¼ ³»¿ëÀϱî?</H1>
h1({-align=>left}); <H1 ALIGN="LEFT">
h1({-align=>left},'³»¿ë'); <H1 ALIGN="LEFT">³»¿ë</H1>
HTML ű״ ³ªÁß¿¡ º¸´Ù ÀÚ¼¼È÷ ¼³¸íÇÏ°Ú´Ù.
CGI.pmÀ» óÀ½ »ç¿ëÇÏ´Â »ç¶÷µéÀº HTML ÅÂ±× °ü·Ã ÇÔ¼öÀÇ È£Ãâ ±ÔÄ¢(HTML ÅÂ±× ¼Ó¼ºÀ» Áß°ýÈ£·Î °¨½Î´Â)°ú ´Ù¸¥ ·çƾÀÇ È£Ãâ ±ÔÄ¢(Áß°ýÈ£ ¾øÀÌ ¼Ó¼ºÀ» ¸¸µå´Â) »çÀÌÀÇ Â÷ÀÌ ¶§¹®¿¡ È¥¶õ½º·¯¿ï °ÍÀÌ´Ù. È¥¶õ½º·¯¿öÇÒ ÇÊ¿ä´Â ¾ø´Ù. Áß°ýÈ£´Â ¸ðµÎ ¿É¼ÇÀÌ´Ù. ¸¸¾à ¿øÇÑ´Ù¸é ±â¸í ÀÎÀÚ¸¦ ÃëÇÏ´Â ÀÓÀÇÀÇ ·çƾÀ» È£ÃâÇÒ ¶§ Áß°ýÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î:
print $q->header( {-type=>'image/gif',-expires=>'+3d'} );
-w ½ºÀ§Ä¡¸¦ »ç¿ëÇÑ´Ù¸é ¸î¸î CGI.pm ÀÎÀÚÀÇ À̸§ÀÌ ³»ÀåµÈ ÆÞ ÇÔ¼ö¿Í Ãæµ¹À» ÀÏÀ¸Å²´Ù´Â °æ°í¸¦ º¸°ÔµÉ °ÍÀÌ´Ù. À̵éÁß °¡Àå ºó¹øÇÑ °ÍÀº ´ÙÁß °ªÀ» °®´Â ¸Þ´º(·¹µð¿À ¹öÆ°°ú °°Àº)¸¦ »ý¼ºÇϴµ¥ »ç¿ëµÇ´Â -values ÀÎÀÚÀÌ´Ù. ÀÌ °æ°í¸¦ ¿ìȸÇϱâÀ§Çؼ´Â ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.
- °¡´ÉÇÏ´Ù¸é ´Ù¸¥ À̸§À» »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î -value´Â -valuesÀÇ º°ÄªÀÌ´Ù.
- ´ë¼Ò¹®ÀÚ¸¦ º¯°æÇÑ´Ù. ¿¹: -Values
- ÀÎÀÚ À̸§À» ÀÛÀº µû¿ÈÇ¥·Î °¨½Ñ´Ù. ¿¹: '-values'
¸¹Àº ·çƾµé¿¡¼ ·çƾÀÌ ÀνÄÇÏÁö ¸øÇÏ´Â ±â¸í ÀÎÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î ÀνÄÈ÷Áö ¸øÇÏ´Â ÀÎÀÚ¸¦ ·çƾ¿¡ Á¦°øÇÔÀ¸·Î¼ ºñÇ¥ÁØ HTTP Çì´õ Çʵ带 »ý¼ºÇÒ ¼ö ÀÖ´Ù.
print $q->header(-type => 'text/html',
-cost => 'Three smackers',
-annoyance_level => 'high',
-complaints_to => 'bit bucket');
ÀÌ ¿¹´Â ´ÙÀ½°ú °°Àº ºñÇ¥ÁØ HTTP Çì´õ¸¦ ¸¸µç´Ù.
HTTP/1.0 200 OK
Cost: Three smackers
Annoyance-level: high
Complaints-to: bit bucket
Content-type: text/html
¹ØÁÙÀº ÀÚµ¿ÀûÀ¸·Î ´ë½¬(-)·Î º¯È¯µÈ´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. HTML »ý¼º ·çƾÀº ´Ù¸¥ ÇüÅÂÀÇ º¯È¯À» ¼öÇàÇÑ´Ù.
ÀÌ·¯ÇÑ Æ¯Â¡À¸·Î ºü¸£°Ô º¯ÇÏ´Â HTTP¿Í HTML Ç¥ÁØÀ» À¯ÁöÇÒ ¼ö ÀÖ´Ù.
»õ·Î¿î ÁúÀÇ°³Ã¼ »ý¼ºÇϱâ(°³Ã¼ ÁöÇâ ½ºÅ¸ÀÏ)
$query = new CGI;
ÀÌ °ÍÀº ÀÔ·Â(POST¿Í GET ¸Þ¼Òµå)À» Çؼ®ÇÏ°í ±× °á°ú¸¦ $query¶ó´Â ÆÞ5 °³Ã¼·Î ÀúÀåÇÑ´Ù.
ÀÔ·Â ÆÄÀϷκÎÅÍ »õ·Î¿î ÁúÀÇ°³Ã¼ »ý¼ºÇϱâ
$query = new CGI(INPUTFILE);
new()
¸Þ¼Òµå¿¡ ÆÄÀÏÇÚµéÀ» Á¦°øÇϸé ÆÄÀÏ(¶Ç´Â STDINÀ̳ª ¹«¾ùÀ̵ç)·ÎºÎÅÍ ¸Å°³º¯¼ö¸¦ Àд´Ù. ÀÌ ÆÄÀÏÀº µð¹ö±ëȯ°æÀ» À§ÇØ ÀúÀåµÈ ÀÓÀÇ Çü½ÄÀÇ ÆÄÀÏÀÏ ¼ö ÀÖ´Ù(¿¹: °³Ç๮ÀÚ°¡ Á¦°ÅµÈ ÀÏ·ÃÀÇ TAG=VALUE ½Ö). ÆíÀǸ¦ À§ÇØ ÀÌ ÆÄÀÏÀº
save()
¸Þ¼Òµå¿¡ÀÇÇØ »ý¼ºµÇ´Â °ÍÀ¸·Î ÇÏÀÚ. ¿©·¯ÇàÀ» °®´Â ¸Å°³º¯¼öµµ ÀúÀå, º¹¿øµÉ ¼ö ÀÖ´Ù.
ÆÞ ÃßÁ¾ÀÚµéÀº ÆÄÀÏÇÚµéÀÇ ÂüÁ¶³ª ½ÉÁö¾î´Â ÆÄÀÏÇÚµé ¹À½(glob: ÆÄÀÏÇÚµéÀ» Àü´ÞÇÏ´Â °ø½ÄÀûÀÎ ¹æ¹ý)À» ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù°ÍÀ» ¾Ë¸é Áñ°Å¿ö ÇÒ °ÍÀÌ´Ù.
$query = new CGI(\*STDIN);
¶ÇÇÑ CGI °³Ã¼¸¦ FileHandle³ª IO::File °³Ã¼·Î ÃʱâÈÇÒ ¼öµµ ÀÖ´Ù.
ÇÔ¼ö ÁöÇâ ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ°í ÆÄÀϷκÎÅÍ CGI »óŸ¦ ÃʱâÈÇÏ·Á¸é restore_parameters()¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ °ÍÀº ÁöÁ¤ÇÑ ÆÄÀÏ ÇÚµé·ÎºÎÅÍ ±âº» CGI °³Ã¼¸¦ (Àç)ÃʱâÈ ÇÒ °ÍÀÌ´Ù.
open (IN,"test.in") || die;
restore_parameters(IN);
close IN;
¿¬°ü¹è¿ ÂüÁ¶·Î ÁúÀÇ°³Ã¼¸¦ ÃʱâÈÇÒ ¼ö ÀÖ´Ù.
$query = new CGI( {'dinosaur'=>'Áê¶ó±â °ø¿ø',
'song'=>'³Î »ç¶ûÇØ',
'friends'=>[qw/¼¼»ó ¸ðµç ¿©ÀÚ/]}
);
¶ÇÇÑ Àû´çÈ÷ Çü½ÄÈµÈ ÀÔ·ÂÀ¸·ÎºÎÅÍ ÁúÀÇ°³Ã¼¸¦ ÃʱâÈÇÒ ¼ö ÀÖ´Ù. URL¿¡¼ ÃßÃâÇÑ ÁúÀÇ ¹®ÀÚ¿µµ °¡´ÉÇÏ´Ù.
$query = new CGI('dinosaur=barney&color=purple');
¸¶Áö¸·À¸·Î ÀÌÀü¿¡ Á¸ÀçÇÑ CGI °³Ã¼·ÎºÎÅÍ ÃʱâÈÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù(ÇöÀç ÀÌ °ÍÀº ¸Å°³º¯¼ö ¸ñ·ÏÀÇ »çº»ÀÌ´Ù).
$old_query = new CGI;
$new_query = new CGI($old_query);
ºó ÁúÀǸ¦ »ý¼ºÇϱâÀ§ÇØ °ø¹é¹®ÀÚ¿À̳ª °ø¹é Çؽ¬·Î ÃʱâÈÇÒ ¼ö ÀÖ´Ù.
$empty_query = new CGI("");
¶Ç´Â
$empty_query = new CGI({});
ÁúÀǷκÎÅÍ Å°¿öµåÀÇ ¸ñ·Ï °¡Á®¿À±â
@keywords = $query->keywords
½ºÅ©¸³Æ®°¡ <ISINDEX> °Ë»öÀÇ °á°ú·Î¼ È£ÃâµÇ¾ú´Ù¸é Çؼ®µÈ Å°¿öµå´Â
keywords()
¸Þ¼Òµå¸¦ »ç¿ëÇؼ ¾òÀ» ¼ö ÀÖ´Ù.
½ºÆ®¸³Æ®¿¡ Àü´ÞµÈ ¸ðµç ¸Å°³º¯¼öÀÇ À̸§ °¡Á®¿À±â
@names = $query->param
½ºÅ©¸³Æ®°¡ ¸Å°³º¯¼ö ¸ñ·Ï(¿¹: "name1=value1&name2=value2&name3=value3")À¸·Î È£ÃâµÇ¾ú´Ù¸é
param()
¸Þ¼Òµå´Â ¸Å°³º¯¼öÀÇ À̸§À» ¹è¿·Î ¸®ÅÏÇÒ °ÍÀÌ´Ù. ½ºÅ©¸³Æ®°¡ <ISINDEX>·Î È£ÃâµÇ¾ú´Ù¸é 'keywords'¶ó´Â ÇϳªÀÇ ¸Å°³º¯¼ö°¡ ¸®ÅϵȴÙ.
ÁÖÀÇ:
1.5 ÆÇ¿¡¼ ó·³ ¸®ÅÏµÈ ¸Å°³º¯¼ö À̸§ ¹è¿Àº ºê·Î¿ìÀú¿¡ÀÇÇØ Á¦ÃâµÈ ¼ø¼¿Í µ¿ÀÏÇÑ ¼ø¼·Î ÀúÀåµÈ´Ù. º¸Åë ÀÌ ¼ø¼´Â ¸Å°³º¯¼ö¸¦ Æû¿¡¼ Á¤ÀÇÇÑ ¼ø¼¿Í °°´Ù(±×·¯³ª ÀÌ °ÍÀÌ Ç¥ÁØÀº ¾Æ´Ï¸ç µû¶ó¼ ¾î¶°ÇÑ °Íµµ º¸ÁõÇÒ ¼ö´Â ¾ø´Ù).
ÇϳªÀÇ ±â¸í ¸Å°³º¯¼öÀÇ °ª(µé) °¡Á®¿À±â
@values = $query->param('foo');
¶Ç´Â
$value = $query->param('foo');
±â¸í ¸Å°³º¯¼öÀÇ °ªÀ» °¡Á®¿À±âÀ§ÇØ
param()
¸Þ¼Òµå¿¡ ÇϳªÀÇ ÀÎÀÚ¸¦ Àü´ÞÇÑ´Ù. ¸Å°³º¯¼ö°¡ ´ÙÁß °ªÀ» °¡Áö°í ÀÖ´Ù¸é(¼±Åà ¸ñ·ÏÀÇ ´ÙÁß¼±ÅÃ) ¹è¿·Î ¹ÞÀ» ¼ö ÀÖ´Ù. ±×·¸Áö ¾Ê´Ù¸é ÀÌ ¸Þ¼Òµå´Â ÇϳªÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù.
±â¸í ¸Å°³º¯¼ö °ªÀÇ ¼³Á¤
$query->param('foo','ÀÓÀÇÀÇ','¹è¿ÀÇ','°ª');
ÀÌ °ÍÀº ¸®½ºÆ®·Î 'foo'¶ó´Â ¸Å°³º¯¼öÀÇ °ªÀ» ¼³Á¤ÇÑ´Ù. ÀÌ °ÍÀÌ ½ºÅ©¸³Æ®°¡ ÀÏ´Ü È£ÃâµÈ ÈÄ ÇʵåÀÇ °ªÀ» º¯°æÇÏ´Â ÇÑ ¹æ¹ýÀÌ´Ù.(¶Ç ´Ù¸¥ ¹æ¹ýÀº ¸ðµç ¸Þ¼Òµå¿¡ÀÇÇØ Çã¿ëµÇ¸ç Æû ¿ä¼Ò¸¦ »ý¼ºÇϴµ¥ »ç¿ëµÇ´Â -override ¸Å°³º¯¼öÀÌ´Ù.)
param()
´Â ¶ÇÇÑ ±â¸í ¸Å°³º¯¼ö ½ºÅ¸ÀÏÀÇ È£ÃâÀ» ÀνÄÇÑ´Ù. ³ªÁß¿¡ ÀÚ¼¼È÷ ¼³¸íÇÏ°Ú´Ù.
$query->param(-name=>'foo',-values=>['ÀÓÀÇÀÇ','¹è¿ÀÇ','°ª']);
¶Ç´Â
$query->param(-name=>'foo',-value=>'ÇØ´ç °ª');
¸Å°³º¯¼ö¿¡ °ªÀ» Ãß°¡Çϱâ
$query->append(-name=>'foo',-values=>['±×·¯³ª','´õ¸¹Àº','°ª']);
ÀÌ °ÍÀº °ªÀ̳ª °ªÀÇ ¸ñ·ÏÀ» ¸Å°³º¯¼ö¿¡ Ãß°¡ÇÑ´Ù. ¸Å°³º¯¼ö°¡ Á¸ÀçÇÏ´Â °æ¿ì °ªµéÀº ¸Å°³º¯¼öÀÇ ³¡¿¡ µ¡ºÙ¿©Áø´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸Å°³º¯¼ö°¡ »ý¼ºµÈ´Ù. ÀÌ ¹æ¹ýÀº ´ÜÁö ±â¸í ÀÎÀÚ È£Ãâ Çü½Ä¸¸ ÀνÄÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù.
¸ðµç ¸Å°³º¯¼ö¸¦ À̸§°ø°£À¸·Î °¡Á®¿À±â
$query->import_names('R');
'R'À̶ó´Â À̸§ °ø°£¿¡ ÀÏ·ÃÀÇ º¯¼öµéÀ» »ý¼ºÇÑ´Ù. ¿¹¸¦µé¸é $R::foo, @R:foo¿Í°°Àº °ÍµéÀÌ´Ù. Å°¿öµå ¸ñ·ÏÀÇ °æ¿ì @R::keywords°¡ µÈ´Ù. ¾î¶°ÇÑ À̸§µµ ÁÖÁö ¾ÊÀ¸¸é ÀÌ ¸Þ¼Òµå´Â 'Q'¶ó´Â À̸§ °ø°£À¸·Î º¯¼ö¸¦ °¡Á®¿Â´Ù.
°æ°í:
'main'À» ÀÌ¿ëÇؼ´Â ¾î¶°ÇÑ °Íµµ °¡Á®¿Í¼´Â ¾ÈµÈ´Ù. ÀÌ °ÍÀº ½É°¢ÇÑ º¸¾È ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù.
ÀÌÀü ÆÇ¿¡¼ ÀÌ ¸Þ¼Òµå´Â import()¶ó°í ºÒ·È´Ù. 2.20ÆÇ¿¡¼Ã³·³ ÀÌ À̸§Àº ³»ÀåµÉ ÆÞÀÇ ¸ðµâ, import¿ÍÀÇ Ãæµ¹À» ¸·±âÀ§ÇØ ¿ÏÀüÈ÷ Á¦°ÅµÇ¾ú´Ù.
¸Å°³º¯¼ö¸¦ ¿ÏÀüÈ÷ Á¦°ÅÇϱâ
$query->delete('foo');
ÀÌ °ÍÀº ¸Å°³º¯¼ö¸¦ ¿ÏÀüÈ÷ Á¦°ÅÇÑ´Ù. ÀÌ°ÍÀº ¶§¶§·Î ½ºÅ©¸³Æ®¿¡¼ ½ºÅ©¸³Æ®¸¦ È£ÃâÇÏ¸é¼ ¸Å°³º¯¼ö°¡ Àü´ÞµÇÁö ¾Êµµ·Ï ¸Å°³º¯¼ö¸¦ Àç¼³Á¤ÇÒ ¶§ ¾ÆÁÖ À¯¿ëÇÏ´Ù.
ÇÔ¼ö È£Ãâȯ°æÀ» »ç¿ëÇÑ´Ù¸é, ÆÞ¿¡ ³»ÀåµÈ delete ¿¬»êÀÚ¿ÍÀÇ Ãæµ¹À» ÇÇÇϱâÀ§ÇØ "Delete()"¸¦ »ç¿ëÇÑ´Ù.
¸ðµç ¸Å°³º¯¼ö¸¦ »èÁ¦Çϱâ
$query->delete_all();
ÀÌ °ÍÀº CGI °³Ã¼¸¦ ¿ÏÀüÈ÷ »èÁ¦ÇÑ´Ù. Æû¹®¼¸¦ »ý¼ºÇÏ¸é¼ ¸ðµç ±âº»°ªÀÌ È®½ÇÈ÷ ÃëÇØÁöµµ·Ï ÇÒ ¶§ À¯¿ëÇÒ °ÍÀÌ´Ù.
ÇÔ¼ö È£Ãâ ȯ°æÀ» »ç¿ëÇÑ´Ù¸é ´ë½Å¿¡
Delete_all()
¸¦ »ç¿ëÇÑ´Ù.
¸Å°³º¯¼ö ¸ñ·Ï¿¡ Á÷Á¢ Á¢±ÙÇϱâ
$q->param_fetch('address')->[1] = 'Źé»ê¸Æ';
unshift @{$q->param_fetch(-name=>'address')},'Á¶Á¤·¡';
À§¿¡¼ ¼³¸íÇÏÁö ¾ÊÀº ¹æ¹ýÀ¸·Î ¸Å°³º¯¼ö ¸ñ·Ï¿¡ Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é ¸Å°³º¯¼ö À̸§À¸·Î param_fetch() ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î¼ Á÷Á¢ °ªÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ÀÌ °ÍÀº ¸Å°³º¯¼öÀÇ ¹è¿À» ¸®ÅÏÇÏ¸ç ¿øÇÏ´Â ÀÓÀÇÀÇ ¹æ¹ýÀ¸·Î À̵éÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù.
-name¸¦ »ç¿ëÇؼ ±â¸í ÀÎÀÚ Çü½ÄÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
½ºÅ©¸³Æ®ÀÇ »óŸ¦ ÆÄÀÏ·Î ÀúÀåÇϱâ
$query->save(FILEHANDLE)
ÀÌ °ÍÀº ÆûÀÇ ÇöÀç »óŸ¦ ÁÖ¾îÁø ÆÄÀÏ ÇÚµé·Î ÀúÀåÇÑ´Ù.
new()
¸Þ¼Òµå¿¡ ÆÄÀÏÇÚµéÀ» Á¦°øÇÔÀ¸·Î¼ ÀÌ »óŸ¦ ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´Ù. ÆÄÀÏÇÚµéÀº ÆÄÀÏ, ÆÄÀÌÇÁ ¶Ç´Â ¹«¾ùÀÌµç °¡´ÉÇÏ´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù.
ÀúÀåµÈ ÆÄÀÏÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
NAME1=VALUE1
NAME1=VALUE1
NAME2=VALUE2
NAME3=VALUE3
=
À̸§°ú °ªÀº URL¿¡¼ Ư¼ö¹®ÀÚ°¡ Á¦°ÅµÈ Çü½ÄÀÌ´Ù. ´ÙÁß °ªÀ» °®´Â CGI ¸Å°³º¯¼ö´Â ¹Ýº¹ÀûÀÎ À̸§À¸·Î Ç¥ÇöµÈ´Ù. °¢°¢ÀÇ ±â·ÏÀº ÇϳªÀÇ =¿¡ÀÇÇØ ºÐ¸®µÈ´Ù. ¶ÇÇÑ ÀÌ·¯ÇÑ »óŸ¦ ¿©·¯¹ø ¾²°í new¸¦ ¿©·¯¹ø È£ÃâÇÔÀ¸·Î¼ À̵éÀ» ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´Ù. Ãß°¡ ¸ðµå·Î ÆÄÀÏÀ» ¿ÀÇÂÇÔÀ¸·Î¼ ¿©·¯ ¼¼¼ÇÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀ¸·Î °£´ÜÇÑ ¹æ¸í·ÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç »ç¿ëÀÚÀÇ ÁúÀÇ ¸ñ·ÏÀ» À¯ÁöÇÒ ¼ö ÀÖ´Ù. ¿©±â ´ÙÁß ¼¼¼Ç ±â·ÏÀ» »ý¼ºÇϴ ªÀº ¿¹°¡ ÀÖ´Ù.
1 : #!/usr/local/bin/perl
2 : use CGI;
3 :
4 : open (OUT,">>./save/test.txt") || die;
5 : $records = 5;
6 : foreach (0..$records) {
7 : my $q = new CGI;
8 : $q->param(-name=>'counter',-value=>$_);
9 : $q->save(OUT);
10 : }
11 : close OUT;
12 :
13 : $q = new CGI;
14 : # ÀбâÀ§ÇØ ´Ù½Ã ÆÄÀÏÀ» ¿¬´Ù.
15 : print $q->header, $q->start_html, $q->pre;
16 :
17 : open (IN,"./save/test.txt") || die;
18 : while (!eof(IN)) {
19 : my $q = new CGI(IN);
20 : print $q->param('counter'),"\n";
21 : }
22 :
23 : print $q->pre, $q->end_html;
½ÇÇà°á°ú
count.cgi
ÀúÀå°á°ú
test.txt
ÀúÀå/º¹¿ø¿¡¼ »ç¿ëµÈ ÆÄÀÏ Çü½ÄÀº Whitehead Genome CenterÀÇ µ¥ÀÌŸ ±³È¯Çü½Ä, "Boulderio"¿¡ÀÇÇØ »ç¿ëµÈ °Í°ú µ¿ÀÏÇϸç Boulderio À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇؼ Á¶ÀÛ, DBÈ µÉ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ °ÍÀº BOULDER À» º¸±â ¹Ù¶õ´Ù.
ÇÔ¼ö ÁöÇâ ȯ°æ¿¡¼ ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ·Á¸é save_parameters()À» »ç¿ëÇÑ´Ù.
ÇÔ¼ö ÁöÇâ ȯ°æÀ» »ç¿ëÇϱâ
ÇÔ¼ö ÁöÇâ ȯ°æÀ» »ç¿ëÇϱâÀ§ÇØ À̸§ °ø°£À¸·Î °¡Á®¿Ã ·çƾÀ̳ª ·çƾÀÇ ÁýÇÕÀ» ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
use CGI <¸Þ¼ÒµåÀÇ ¸ñ·Ï>;
ÀÌ ¹æ¹ýÀº ¸Þ¼ÒµåÀÇ ¸ñ·ÏÀ» ÇöÀçÀÇ ÆÐÅ°Áö·Î °¡Á®¿À°ÔµÈ´Ù. CGI °³Ã¼¸¦ »ý¼ºÇÏÁö ¾Ê°í Á÷Á¢ À̵éÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù. ÀÌ ¿¹´Â param()°ú header()¸¦ °¡Á®¿À´Â ¹æ¹ý°ú À̵éÀ» Á÷Á¢ »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸ÀÌ°í ÀÖ´Ù.
use CGI 'param','header';
print header('text/plain');
$zipcode = param('zipcode');
À̸§¿¡ÀÇÇØ ±×·ìÁö¾îÁø ÇÔ¼öÀ» °øÅëÁýÇÕÀ» °¡Á®¿À´Â °æ¿ì°¡ ¸¹À» °ÍÀÌ´Ù. ¸ðµç ÇÔ¼ö ÁýÇÕÀº ":html3"('HTML 3 Ç¥ÁØ¿¡ Á¤ÀÇµÈ Å±×)ó·³ ":" ¹®ÀÚ·Î ½ÃÀ۵ȴÙ.
¿©±â °¡Á®¿Ã ¼ö ÀÖ´Â ÇÔ¼ö ÁýÇÕÀÇ ¸ñ·ÏÀÌ ÀÖ´Ù.
- :cgi
- param(), path_info()¿Í °°Àº CGI¸¦ ó¸®ÇÏ´Â ¸ðµç ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :form
- textfield()¿Í °°ÀÌ ÆûÀ» »ý¼ºÇÏ´Â ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :html2
- HTML 2.0ÀÇ Ç¥ÁØ Å±׸¦ »ý¼ºÇÏ´Â ¸ðµç ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :html3
- HTML 3.0¿¡¼ Á¦¾ÈµÈ ű×(<table>, <super>¿Í <sub>¿Í °¥Àº)¸¦ »ý¼ºÇÏ´Â ¸ðµç ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :netscape
- ³Ý½ºÄÉÀÙ¿¡¼ Á¤ÀÇÇÑ HTML È®ÀåÀ» »ý¼ºÇÏ´Â ¸ðµç ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :html
- ¸ðµç HTML ű×(¿¹:'html2' + 'html3' + 'netscape')¸¦ »ý¼ºÇÏ´Â ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù.
- :standard
- Ç¥ÁØ Æ¯Â¡, 'html2', 'html3', 'form'°ú 'cgi'À» °¡Á®¿Â´Ù.
- :all
- »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ¸Þ¼Òµå¸¦ °¡Á®¿Â´Ù. ¿ÏÀüÇÑ ¸ñ·ÏÀº %TAGS°¡ Á¤ÀÇµÈ CGI.pmÀÇ Äڵ带 º»´Ù.
CGI.pm¿¡¼ Áö¿øÇÏÁö ¾Ê´Â ÇÔ¼ö¸íÀ» °¡Á®¿Â´Ù¸é CGI.pmÀº ÀÌ °ÍÀ» »õ·Î¿î HTML ű׷Πó¸®Çϸç Àû´çÇÑ ¼ºê·çƾÀ» »ý¼ºÇÑ´Ù. ±×¸®°í ³ª¼ ÀÌ °ÍÀ» ´Ù¸¥ HTML ÅÂ±×¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ °ÍÀº ±Þ¼Óµµ·Î º¯ÇÏ´Â HTML Ç¥ÁØÀ» À§ÇØ Á¦°øµÈ´Ù. ¿¹¸¦µé¾î Money$fot´Â <GRADIENT>¶ó´Â »õ·Î¿î ű×(ÄÄÇ»Å͸¦ ´Ù½Ã ºÎÆÃÇÒ ¶§±îÁö »ç¿ëÀÚÀÇ µ¥½ºÅ©Å¾ÀÇ »ö»óÀ» ÁÖ±âÀûÀ¸·Î º¯°æÇÏ´Â)À» ¹ßÇ¥Çß´Ù. ÀÌ °ÍÀ» »ç¿ëÇϱâÀ§ÇØ CGI.pmÀÇ »õ¹öÀüÀ» ±â´Ù¸± ÇÊ¿ä¾øÀÌ ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» »ç¿ëÇÏ¸é µÈ´Ù.
use CGI qw/:standard :html3 gradient/;
print gradient({-start=>'red',-end=>'blue'});
ÁÖÀÇ:
CGI.pmÀÇ ½ÇÇà¼Óµµ¿¡ °ü½ÉÀÌ ÀÖ´Ù¸é ÀÐÀ» ½Éº¼À» ÁöÁ¤Çϴ ǥÁØ Exporter Çü½ÄÀ» »ç¿ëÇÏÁö ¸»±â ¹Ù¶õ´Ù. ÀÌ °ÍÀº ¾ÕÀ¸·Î º¯°æµÉ °ÍÀÌ´Ù.
ÀÓÀÇÀÇ »óÅ À¯Áö CGI¸¦ °¡Á®¿À°Å³ª ÆûÀ» »ý¼ºÇÏ´Â ¸Þ¼Òµå¸¦ °¡Á®¿À¸é ±âº» CGI °³Ã¼°¡ »ý¼ºµÇ¸ç ÀÓÀÇÀÇ ¸Þ¼Òµå¸¦ óÀ½ »ç¿ëÇÒ ¶§ ÀÚµ¿ÀûÀ¸·Î ÃʱâȵȴÙ. ÀÌ·¯ÇÑ °Í¿¡´Â param(), textfield(),
submit()¿Í °°Àº °ÍµéÀÌ ÀÖ´Ù(CGI °³Ã¼¸¦ Á÷Á¢ Á¢±ÙÇÏ·Á¸é Àü¿ª º¯¼ö, $CGI::Q¸¦ »ç¿ëÇÑ´Ù). CGI.pmÀÇ ¸Þ¼Òµå¸¦ °¡Á®¿ÈÀ¸·Î¼ º¸±â¿¡ ÈξÀ ¿ì¾ÆÇÑ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
1 : #!/usr/local/bin/perl
2 : # Æû¹®¼¸¦ »ý¼ºÇϸç
3 : # ÆûÀÇ ÀÔ·ÂÀ» ´Ù½Ã Ãâ·ÂÇÏ´Â CGI
4 : use CGI qw/:standard/;
5 : print header,
6 : start_html('°£´ÜÇÑ ¿¹'),
7 : h1('°£´ÜÇÑ ¿¹'),
8 : start_form,
9 : "À̸§ÀÌ ¹¹´Ï? ",textfield('name'),p,
10 : "¿øÇÏ´Â °ÍÀº ¹¹´Ï?", p,
11 : checkbox_group(-name=>'words',
12 : -values=>['¿©ÀÚ','¾Æ³»','¿©µ¿»ý','¿©ÀÚ¾Ö'],
13 : -defaults=>['¿©ÀÚ','¾Æ³»']), p,
14 : "ÁÁ¾ÆÇÏ´Â »öÀº? ",
15 : popup_menu(-name=>'color',
16 : -values=>['»¡°£»ö','³ì»ö','ÆĶõ»ö','²ÀÁö»ö']),p,
17 : submit('º¸³»±â'),
18 : end_form,
19 : hr;
20 :
21 : if (param()) {
22 : print "´Ï À̸§: ",em(param('name')),p,
23 : "ÇÊ¿äÇÑ °Í: ",em(join(", ",param('words'))),p,
24 : "ÁÁ¾ÆÇÏ´Â »ö: ",em(param('color')),
25 : hr;
26 : }
½ÇÇà°á°ú
example1.cgi
ÇÁ¶ó±×¸¶
ÇÔ¼öÀÇ ÁýÇÕ¿Ü¿¡¼ °¡Á®¿Ã ¼ö ÀÖ´Â ¸¹Àº ¼öÀÇ ÇÁ¶ó±×¸¶°¡ Á¸ÀçÇÑ´Ù. Ç×»ó ´ë½¬(-)·Î ½ÃÀÛÇÏ´Â ÇÁ¶ó±×¸¶´Â CGI.pmÀÇ µ¿ÀÛ ¹æ¹ýÀ» º¯°æÇÑ´Ù. ÇÁ¶ó±×¸¶, ÇÔ¼öÁýÇÕ°ú °³°³ÀÇ ÇÔ¼ö´Â µ¿ÀÏÇÑ
use()
ÇàÀ» ÅëÇØ °¡Á®¿Ã ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î ´ÙÀ½¿¡ »ç¿ëÇÑ ¹®ÀåÀº ÇÔ¼öÀÇ standartÁýÇÕÀ» µð¹ö±ë ¸ðµå¸¦ ²ö »óÅÂ(ÇÁ¶ó±×¸¶ -no_debug)¿¡¼ °¡Á®¿À°Ô µÈ´Ù.
use CGI qw/:standard -no_debug/;
ÇÁ¶ó±×¸¶ÀÇ ÇöÀç ¸ñ·ÏÀº ´ÙÀ½°ú °°´Ù.
- -any
- CGI -any¸¦ »ç¿ëÇϸé ÁúÀÇ °³Ã¼°¡ ÀνÄÇÏÁö ¸øÇÏ´Â ÀÓÀÇÀÇ ¸Þ¼Òµå´Â »õ·Î¿î HTML ű׷ΠÇؼ®µÈ´Ù. ÀÌ °ÍÀ¸·Î ³Ý½ºÄÉÀÙÀ̳ª Money$oftÀÇ Æ¯º°ÇÑ HTML È®ÀåÀ» Áö¿øÇÒ ¼öÀÖ´Ù.
use CGI qw(-any);
$q=new CGI;
print $q->gradient({speed=>'fast',start=>'red',end=>'blue'});
- anyÀ» »ç¿ëÇÏ´Â °æ¿ì ÇÔ¼öÀÇ À̸§À» À߸øÀÔ·ÂÇϸé HTML ű׷ΠÇؼ®µÇ¹Ç·Î ÀÌ °ÍÀº °¡±ÞÀû »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
- -compile
- ÀÌ °ÍÀº Áö½ÃµÈ ÀÚµ¿ ÀûÀç ¸Å¼Òµå°¡ ¸ÕÀú ÄÄÆÄÀÏµÇ°Ô ¸¸µç´Ù. ÀÌ °ÍÀº FastCGI³ª mod_perlÇÏ¿¡¼ È®ÀåµÈ ½Ã°£Áֱ⿡´ëÇØ ½ÇÇàµÇ´Â ½ºÅ©¸³Æ®¿¡´ëÇØ À¯¿ëÇÏ´Ù. »ç¿ëÇÏ·Á´Â ¸Þ¼Òµå³ª ¸Þ¼Òµå ±º¿¡´ëÇØ ÀÌ °ÍÀ» »ç¿ëÇϱ⠹ٶõ´Ù.
use CGI qw(-compile :standard :html3);
- ¶Ç´Â
use CGI qw(-compile :all);
ÁÖÀÇ:
ÀÌ ¹æ¹ýÀ¸·Î -compile ÇÁ¶ó±×¸¶´Â Ç×»ó ÄÄÆÄÀÏµÈ ÇÔ¼ö¸¦ ÇöÀçÀÇ À̸§°ø°£À¸·Î °¡Á®¿À´Â È¿°ú¸¦ °®´Â´Ù. °¡Á®¿ÀÁö ¾Ê°í ÄÄÆÄÀÏÇÏ·Á¸é ´ë½Å¿¡
compile()
¸¦ »ç¿ëÇÑ´Ù.
- -nph
- CGI.pmÀÌ NPH(Non-Parsed Header) ½ºÆ®¸³Æ®¿¡´ëÇØ Àû´çÇÑ Çì´õ¸¦ »ý¼ºÇϵµ·Ï ¸¸µç´Ù. ½ºÅ©¸³Æ®°¡ NPH¶ó´Â °ÍÀ» ¼¹ö¿¡ ÅëÁöÇÏ´Â °Í¿Ü¿¡ ´Ù¸¥ °Íµµ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. NPH ½ºÅ©¸³Æ®¿¡´ëÇÑ ³íÀÇ´Â NPH ½ºÅ©¸³Æ® »ç¿ëÇϱâ¿Í ¼¹ö ¹Ð±â(¸ô¹ÐÁö)¸¦ º¸±â ¹Ù¶õ´Ù.
- -autoload
- ÀÌ °ÍÀº ÀνÄÇÏÁö ¸øÇÏ´Â ÀÓÀÇÀÇ ÇÔ¼ö´Â CGI.pm¿¡¼ °¡´ÉÇÑ Æò°¡µÇµµ·Ï ÀÚµ¿ ·Î´õ¸¦ Áßø½ÃŲ´Ù. ÀÌ °ÍÀ¸·Î »ç¿ëÀÚ´Â Èû¼ö¸¦ ½Éº¼ Å×ÀÌºí¿¡ Ãß°¡ÇÏÁö ¾Ê°í ¸ðµç CGI.pmÀÇ ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ °ÍÀº ¸Þ¸ð¸® ¼Ò¸ð¸¦ °ÆÁ¤ÇØ¾ß ÇÏ´Â mod_perl »ç¿ëÀÚ¿¡°Ô´Â °ü½ÉÀÖ´Â ÀÏÀÏ °ÍÀÌ´Ù.
°æ°í:
-autoload¸¦ »ç¿ëÇÏ´Â °æ¿ì ÇÔ¼ö¿¡´Â ¹Ýµå½Ã °ýÈ£¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. Áï, hrº¸´Ù´Â hr()¸¦ »ç¿ëÇϰųª ½ºÅ©¸³Æ®ÀÇ ½ÃÀۺκп¡ use subs qw/hr p header/¿Í °°Àº °ÍÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù.
- -no_debug
- ÀÌ °ÍÀº ¸í·ÉÇà ó¸® Ư¡À» »ç¿ëÇÏÁö ¾Ê°Ô ¸¸µç´Ù. µ¿ÀûÀ¸·Î »ý¼ºµÈ HTMLÀ» ¸¸µé±âÀ§ÇØ CGI.pm ½ºÅ©¸³Æ®¸¦ ¸í·ÉÇà¿¡¼ ±âµ¿ÇÏ¸é¼ Ç¥ÁØÀÔ·ÂÀ̳ª ¸í·ÉÇàÀ¸·ÎºÎÅÍ CGI ¸Å°³º¯¼ö¸¦ ÀÔ·ÂÇÏ°í ½ÍÁö ¾Ê´Ù¸é ÀÌ ÇÁ¶ó±×¸¶¸¦ »ç¿ëÇÑ´Ù.
use CGI qw(-no_debug :standard);
-
Ç¥ÁØÀÔ·ÂÀÌ ¾Æ´Ï¶ó ¸í·ÉÇà¿¡¼¸¸ ¸Å°³º¯¼ö¸¦ ó¸®ÇÏ±æ ¿øÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù.
use CGI qw(-no_debug :standard);
restore_parameters(join('&',@ARGV));
-
º¸´Ù ÀÚ¼¼ÇÑ °ÍÀº µð¹ö±ë¿¡°üÇÑ ÀýÀ» º¸±â ¹Ù¶õ´Ù.
- -private_tempfiles
- CGI.pmÀº ¾÷·ÎµåµÈ ÆÄÀÏÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. º¸Åë ÀÌ °ÍÀº ¾÷·ÎµåµÈ ÆÄÀÏÀ» Àӽà Æú´õ¿¡ ÀúÀåÇÏ°í ÆÄÀÏ ¾÷·Îµå°¡ Á¾·áµÆÀ» ¶§ ÆÄÀÏÀ» »èÁ¦ÇÑ´Ù. ±×·¯³ª ÀÌ °ÍÀº ÆÄÀÏ ¾÷·Îµå Àý¿¡¼ ¼³¸íÇÏ´Â °Íó·³ À§ÇèºÎ´ãÀÌ ÀÖ´Ù. CGI ½ºÅ©¸³Æ®ÀÇ ÀúÀÚ´Â ÀÌ µ¥ÀÌŸ°¡ ±ØºñÀÇ Á¤º¸¶ó°í ÇÒ Áö¶óµµ ¾÷·Îµå ÇÏ´Â µ¿¾È ÀÌ µ¥ÀÌŸ¸¦ ÈÉóº¼ ¼ö ÀÖ´Ù. Unix ½Ã½ºÅÛ¿¡¼ -private_tempfiles ÇÁ¶ó±×¸¶´Â ÀÌ·¯ÇÑ À§Ç輺À» Á¦°ÅÇϱâ À§ÇØ Àӽà ÆÄÀÏÀ» ¿°í, ½ÉÁö¾î ÀÓÀÇÀÇ µ¥ÀÌŸ°¡ Àӽà ÆÄÀÏ¿¡ ¾²¿©Áö±â Àü¿¡ ¹Ù·Î »èÁ¦µÇµµ·Ï ¸¸µç´Ù.