XII. ¼ºê·çƾ ÀÛ¼º ¹× È£Ãâ¹ý
½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Ù º¸¸é, ¹Ýº¹ÀûÀ¸·Î ½ÇÇàµÇ´Â ·çƾÀ» Çѹø¸¸ Á¤ÀÇÇϰí, ¸ÞÀÎ ·çƾ¿¡¼´Â À̸¦ È£ÃâÇϵµ·Ï ÇÏ°í ½ÍÀ» °æ¿ì°¡ ÀÖ´Ù. ¼ºê·çƾ(Subroutine)Àº ¸ÞÀÎ ·çƾ¿¡°Ô È£ÃâÀ» ¹Þ¾Æ ½ÇÇàµÇ´Â µ¶¸³ÀûÀÎ ¸ðµâÀÌ´Ù.
¼ºê·çƾÀº ´ÙÀ½°ú °°Àº ÇüÅ·Π±¸¼ºµÈ´Ù.
sub [subroutine-name] {
[subroutine-body]
}
´ÙÀ½Àº ¼ºê·çƾÀ» »ç¿ëÇÏ´Â ¿¹ÀÌ´Ù.
...
&my_sub; # ¼ºê·çƾ È£Ãâ
...
sub my_sub { # È£ÃâµÇ´Â ¼ºê·çƾÀÇ ½ÃÀÛ
$myint = 1;
print $myint;
} # È£ÃâµÇ´Â ¼ºê·çƾÀÇ ³¡
±×¸®°í, ¼ºê·çƾ¿¡°Ô ÀÎÀÚ(Arguments)¸¦ Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÀÎÀÚ´Â ¼ºê·çƾÀÌ ½ÇÇàµÇ´Âµ¥ ÇÊ¿äÇÑ º¯¼ö°ªÀ» ¶æÇϸç, ¸ÞÀÎ ·çƾÀÌ Àü´ÞÇØÁØ ÀÎÀÚ °ª¿¡ ÀÇÇØ ¼ºê·çƾÀÇ ½ÇÇà °á°ú°¡ ´Þ¶óÁö°Ô µÈ´Ù.
sub [subroutine-name] {
local([argument-1], [argument-2], ...) = @_;
[subroutine-body]
}
´ÙÀ½Àº ÀÎÀÚ¸¦ »ç¿ëÇÏ´Â ¿¹ÀÌ´Ù.
...
&my_sub(1);
...
sub my_sub {
local($myint) = @_;
print $myint;
}
"local" À̶ó´Â »õ·Î¿î ÇÔ¼ö°¡ µîÀåÇß´Ù. PERL¿¡¼´Â º¯¼ö ¼±¾ð½Ã Ưº°ÇÏ°Ô ÁöÁ¤ÇØ ÁÖÁö ¾Ê´Â ÀÌ»ó ¸ðµç º¯¼ö¸¦ Àü¿ª º¯¼ö(global)·Î ¸¸µé¾î ¹ö¸°´Ù. ±×·¯³ª, ÀÌ local ÇÔ¼ö¸¦ ¾²¸é, ÀÌ º¯¼öÀÇ °¡½Ã¹üÀ§(scope)´Â ÀÌ ¼ºê·çƾ ¾ÈÀ¸·Î Á¦ÇѵȴÙ. ÀÌ ¼ºê·çƾ ¹Û¿¡¼ ÀÌ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø°Ô µÈ´Ù. À̰ÍÀ» Áö¿ª º¯¼ö(local variable)¶ó ÇÑ´Ù.
±×¸®°í "@_" ¸¦ ÀÌ¿ëÇØ¼ ÀÎÀÚ°¡ ¸î°³À̵çÁö ´Ù ¹Þ¾Æ ³¾ ¼ö ÀÖ´Ù.
local($mylocal, $mylocal2, $mylocal3) = @_;
print "$mylocalt$mylocal2t$mylocal3";
±×³É Áö¿ª º¯¼ö¸¸ ¼±¾ðÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ½á ÁÖ¸é µÈ´Ù.
local($mylocal);
Áö¿ªº¯¼ö¸¦ ÃʱâÈ ÇÒ ¼ö ÀÖ´Ù, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
local($mylocal) = 1;
local(@local_array) = (1, 2, 3);
Áö¿ªº¯¼ö°¡ ¿©·¯°³ÀÏ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
local($mylocal, $mylocal2, $mylocal3) = (1, 2, 3);
print "$mylocalt$mylocal2t$mylocal3";
±×¸®°í, PERLÀÇ ¼ºê·çƾÀº ±× °³³äÀ» ´õ ³Ñ¾î¼¼, ÇÔ¼ö(function)ó·³ ¹Ýȯ°ª(return value)À» ¹ÝȯÇÒ ¼ö ÀÖ´Ù. ¾î¶² °ªÀ» ¹ÝȯÇÏ´Â ¹æ¹ýÀº ¼ºê·çƾÀÇ ¸Ç ³¡¿¡ ¹ÝȯÇÏ·Á´Â ½ºÄ®¶ó º¯¼ö¸í¸¸ ½á Áְųª ¹ÝȯÇÏ·Á´Â °ªÀ» Á÷Á¢ ½á ÁÖ¸é µÈ´Ù.
sub [subroutine-name] {
local([argument-1], [argument-2], ...) = @_;
[subroutine-body]
[return-value];
}
´ÙÀ½Àº ¹Ýȯ°ªÀ» ÀÌ¿ëÇÏ´Â ¿¹ÀÌ´Ù.
...
$myreturn = &my_sub;
print $myreturn;
...
sub my_sub {
$myint = 1;
$myint; # ¹Ýȯ°ª(Áï 1ÀÓ)
}
ÀÌ Àå¿¡¼´Â PERLÀÇ ¿ÏÀüÇÑ ±âÃʸ¸ ¹è¿ü´Ù. »ç½Ç ÀÌ ³»¿ë¸¸ °¡Áö°í ½ÇÁ¦ÀûÀÎ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱ⿡´Â ´Ù¼Ò ¹«¸®ÀÌ´Ù. ¾ÕÀ¸·Î´Â ½ÇÁ¦ ¹æ¸í·Ï ¼Ò½º¸¦ °¡Áö°í º¸´Ù ¼¼·ÃµÈ PERL ÇÁ·Î±×·¡¹Ö ±â¹ýÀ» ¹è¿ì°Ô µÉ °ÍÀÌ´Ù. ±×·¯³ª, ÀÌ Àå¿¡¼ ¹è¿î ³»¿ëÀÌ ¾ÕÀ¸·ÎÀÇ PERL ½ºÅ©¸³Æ® ÀÛ¼º¿¡ ÀÖ¾î¼ ±Ù°£ÀÌ µÉ °Í¸¸Àº È®½ÇÇÏ´Ù. °ÇÅõ¸¦ ºó´Ù. |
|