´Ù¸¥ ¿ì¼öÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾îó·³ ÆÞµµ ¼ºê·çƾÀ̶ó ºÎ¸£´Â »ç¿ëÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. À̵éÀº ÇÁ·Î±×·¥ ¾îµð¿¡ À§Ä¡ÇصµµÇÁö¸¸ ÇÁ·Î±×·¥ÀÇ ½ÃÀۺκÐÀ̳ª ³¡ºÎºÐ¿¡ µÎ´Â °ÍÀÌ ¾Æ¸¶ ÃÖ¼±ÀÏ °ÍÀÌ´Ù.
¿ä¾à
¼±¾ð
sub NAME {
STATEMENTS;
}
- NAME
- ¼ºê·çƾÀÇ À̸§
- STATEMENTS
- ¼ºê·çƾ¿¡¼ ¼öÇàÇÒ ¹®Àå
- ¸Å°³º¯¼ö
- ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇÏÁö ¾ÊÀ¸¸ç, @_¸¦ ÀÌ¿ëÇؼ ÂüÁ¶.
- ¸®ÅÏ°ª
- returnÀ» ÀÌ¿ëÇؼ ¸í½ÃÀûÀ¸·Î ¸®ÅÏÇϰųª ¸¶Áö¸·À¸·Î Æò°¡µÈ °ª
- º¯¼ö
- local, my¿Í °°Àº ¹üÀ§ º¯°æÀÚ¸¦ ÀÌ¿ëÇؼ ¸í½ÄÀûÀ¸·Î Ç¥½ÃÇÏÁö ¾Ê´ÂÇÑ Àü¿ªº¯¼ö·Î »ç¿ëµÊ
È£Ãâ
&NAME;
&NAME($var1, $var2);
&NAME(*var);
NAME();
NAME($var1, $var2);
NAME(*var);
- &NAME
- ¼ºê·çƾ È£Ãâ
- &NAME($var1, $var2)
- ¸Å°³º¯¼ö($var1, $var2)·Î ¼ºê·çƾÀ» È£Ãâ
- &NAME(*var)
- ¸®ÅÏ ¹ÞÀ» º¯¼ö¸¦ ÁöÁ¤Çؼ È£Ãâ. *var($var, @var, %var)·Î °ªÀ» ¸®ÅÏ ¹ÞÀ½.
- NAME(), NAME($var1, $var2), NAME(*var)
- & ±âÈ£¸¦ »ý·«ÇÏ°í È£ÃâÇÒ ¼ö ÀÖ´Ù.
ÁÖÀÇ:
*varÀ» ÀÌ¿ëÇϱâ À§ÇØ ¼ºê·çƾÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î Á¤ÀǵǾî¾ß ÇÑ´Ù.
sub NAME {
local(*in) = @_;
STATEMENTS;
}
¼³¸í
¼ºê·çƾÀº Àü´Þ ÇØÁÖ¾î¾ßÇÏ´Â ¸Å°³º¯¼ö¿Í ¹«°üÇÏ°Ô ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®´Â´Ù.
1: sub mysubroutine
2: {
3: print "±×¸® Èï¹ÌÀÖ´Â ·çƾÀº ¾Æ´Ï±º.\n";
4: print "ÇÏÁö¸¸ ¸Å¹ø °°Àº ÀÏÀ» ÇÏÁö.\n";
5: }
´ÙÀ½ÀÇ °Í ¸ðµÎ ÀÌ ¼ºê·çƾÀ» È£ÃâÇϴµ¥ »ç¿ëµÈ´Ù. ¼ºê·çƾÀº ¼ºê·çƾÀÇ À̸§ ¾Õ¿¡
&¸¦ ºÙ¿© È£ÃâÇÏ´Â °Í¿¡ ÁÖÀÇÇÑ´Ù.
&mysubroutine; # ¼ºê·çƾ È£Ãâ
&mysubroutine($_); # ¸Å°³º¯¼ö·Î ¼ºê·çƾ È£Ãâ
&mysubroutine(1+2, $_); # µÎ°³ÀÇ ¸Å°³º¯¼ö·Î ¼ºê·çƾ È£Ãâ
¸Å°³º¯¼ö
À§ÀÇ °æ¿ì¿¡ ¸Å°³º¯¼ö´Â ¹Þ¾ÆµéÀÏ ¼ö ÀÖÁö¸¸ ¹«½ÃµÈ´Ù. ¼ºê·çƾÀ» È£ÃâÇÒ ¶§ ¸Å°³º¯¼ö´Â @_¶ó´Â ¹è¿³»ÀÇ ¸ñ·ÏÀ¸·Î Àü´ÞµÈ´Ù. ÀÌ º¯¼ö´Â Àý´ë·Î ½ºÄ®¶ó º¯¼ö $_¿Í´Â ¹«°üÇÏ´Ù. ´ÙÀ½ ¼ºê·çƾÀº ¼ºê·çƾÀ» È£ÃâÇÒ¶§ Àü´ÞÇÑ ¸Å°³º¯¼ö¸¸ Ãâ·ÂÇÏ´Â ¼ºê·çƾÀÌ´Ù. ¶ÇÇÑ ÀÌ ¼ºê·çƾÀ» È£ÃâÇÏ´Â µÎ°³ÀÇ ¿¹°¡ À̾îÁ® ÀÖ´Ù.
1: sub printargs {
2: print "@_\n";
3: }
4:
5: &printargs("¹Ùº¸", "¿µ±â"); # "¹Ùº¸ ¿µ±â"¸¦ Ãâ·Â
6: &printargs("°³±¸¸®", "¿Õ´«ÀÌ", "ÅõÅõ"); # "°³±¸¸® ¿Õ´«ÀÌ ÅõÅõ"¸¦ Ãâ·Â
´Ù¸¥ ÀϹݹ述ú ¸¶Âù°¡Áö·Î @_ÀÇ °¢ ¿ä¼Ò´Â ´ë°ýÈ£¿¡ÀÇÇØ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
1: sub printfirsttwo {
2: print "ù¹ø° ÀÎÀÚ´Â $_[0]ÀÌ´Ù.\n";
3: print "±×¸®°í $_[1]´Â µÎ¹ø° ÀÎÀÚÀÌ´Ù.\n";
4: }
´Ù½Ã °Á¶ÇÏÁö¸¸ ÂüÁ¶µÈ ½ºÄ®¶ó $_[0], $_[1]µîÀº $_¿Í´Â ÀüÇô ¹«°üÇϹǷΠÃæµ¹À» °ÆÁ¤ÇÊ¿ä´Â ¾ø´Ù.
°ªÀÇ ¸®ÅÏ
¼ºê·çƾÀÇ °á°ú´Â Ç×»ó ¸¶Áö¸·À¸·Î Æò°¡µÈ °ªÀÌ´Ù. ÀÌ ¼ºê·çƾÀº µÎ°³ÀÇ ÀÔ·Â ¸Å°³º¯¼öÁß Å« °ªÀ» ¸®ÅÏÇÑ´Ù. ÀÌ °ÍÀÇ ¿¹´Â ´ÙÀ½°ú °°´Ù:
1: sub maximum
2: {
3: if ($_[0] > $_[1]) {
4: return $_[0];
5: } else {
6: $_[1];
7: }
8: }
9:
10: $biggest = &maximum(37, 24); # ÀÌÁ¦ $biggestÀº 37ÀÌ´Ù.
¾Õ¿¡¼ º» ¼ºê·çƾµéµµ ÀÓÀÇÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. ÀÌ °æ¿ì¿¡´Â 1À» ¸®ÅÏÇÑ´Ù. ÀÌ °ÍÀº ¼ºê·çƾÀÌ print¹®À» ¼öÇàÇÏ°í print¿¡ ¼º°øÇÏ¸é °á°ú´Â Ç×»ó 1À̱⠶§¹®ÀÌ´Ù.
Áö¿ªº¯¼ö
@_ º¯¼ö´Â ÇöÀç ¼ºê·çƾ¿¡¼¸¸ »ç¿ëµÇ´Â Áö¿ªº¯¼öÀÌ´Ù. ¹°·Ð $_[0], $_[1], $_[2]µîµµ Áö¿ªº¯¼öÀÌ´Ù. ´Ù¸¥ º¯¼ö ¿ª½Ã Áö¿ªº¯¼ö°¡ µÉ ¼ö ÀÖÀ¸¸ç, ÀÔ·Â ¸Å°³º¯¼ö¸¦ º¯°æÇÏ·Á´Â °æ¿ì ¾ÆÁÖ À¯¿ëÇÏ´Ù. ´ÙÀ½ ¼ºê·çƾÀº ÇÑ°³ÀÇ ¹®ÀÚ¿ÀÌ ´Ù¸¥ ¹®ÀÚ¿³»¿¡ ÀÖ´ÂÁö¸¦ Á¶»çÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù(°ø¹éÀº Á¦°Å). ¿¹´Â ´ÙÀ½°ú °°´Ù.
1: sub inside
2: {
3: local($a, $b); # Áö¿ªº¯¼ö ¼±¾ð
4: ($a, $b) = ($_[0], $_[1]); # °ª ÇÒ´ç
5: $a =~ s/ //g; # Áö¿ªº¯¼ö¿¡¼ °ø¹é Á¦°Å
6: $b =~ s/ //g;
7: ($a =~ /$b/ || $b =~ /$a/); # $a³»¿¡ $b°¡ Àְųª
8: # $b³»¿¡ $a°¡ Àִ°¡?
9: }
10:
11: &inside("ÀÌ°Ô Ã¥ ÀÓ°¨?", "Ã¥ÀÓ°¨"); # Âü
óÀ½ µÎÇàÀº ´ÙÀ½°ú °°ÀÌ ±³Ã¼ÇÔÀ¸·Î¼ º¸´Ù ±ò²ûÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù.
local($a, $b) = ($_[0], $_[1]);
local°ú ºñ½ÁÇÑ ±â´ÉÀ» ÇÏ´Â my¶ó´Â »õ·Î¿î ¿¬»êÀÚ°¡ µµÀԵǾú´Ù. myÀÇ ±â´ÉÀº local°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÏ¸ç ´Ù¸¸ local¿¡ ºñÇØ Á¶±Ý ºü¸£´Ù.
¿¬½À -¹æ¸í·Ï
guest.cgi¸¦ ´ÙÀ½°ú °°Àº ¼ºê·çƾÀ¸·Î ÀÛ¼ºÇ϶ó.
&read_parse; # ÀԷµðÄÚµù ·çÆÃ
&print_header; # content-typeÃâ·Â. mime typeÀº ÀÎÀÚ·Î ÁöÁ¤
&html_top; # HTML ÇìµåºÎ Ãâ·Â. ŸÀÌƲÀº ÀÎÀÚ·Î ÁöÁ¤
&html_bot; # HTML EndºÎ Ãâ·Â.
&cgi_die; # µð¹ö±ë ·çƾ.
&cgi_die ·çƾÀº ´ÙÀ½°ú ºñ½ÁÇÒ °ÍÀÌ´Ù.
sub cgi_die {
my($title, $subject) = @_;
print <<CGIDie;
content-type: text/html
<html>
<head>
<title>$title</title>
</head>
<body>
<p>$subject</p>
</body>
</html>
CGIDie
exit;
}