|
¡¡
|
¡¡
|
|
µÚ°ËÕ ×Ó³ÌÐò
by chinacode
Ò»¡¢¶¨Òå
¶þ¡¢µ÷ÓÃ
1¡¢ÓÃ&µ÷ÓÃ
2¡¢Ïȶ¨Òåºóµ÷ÓÃ
3¡¢Ç°ÏòÒýÓÃ
4¡¢ÓÃdoµ÷ÓÃ
Èý¡¢·µ»ØÖµ
ËÄ¡¢¾Ö²¿±äÁ¿
Îå¡¢×Ó³ÌÐò²ÎÊý´«µÝ
1¡¢ÐÎʽ
2¡¢´«ËÍÊý×é
Áù¡¢µÝ¹é×Ó³ÌÐò
Æß¡¢ÓñðÃû´«µÝÊý×é²ÎÊý
°Ë¡¢Ô¤¶¨ÒåµÄ×Ó³ÌÐò
Ò»¡¢¶¨Òå
×Ó³ÌÐò¼´Ö´ÐÐÒ»¸öÌØÊâÈÎÎñµÄÒ»¶Î·ÖÀëµÄ´úÂ룬Ëü¿ÉÒÔʹ¼õÉÙÖØ¸´´úÂëÇÒʹ³ÌÐòÒ×¶Á¡£PERLÖУ¬×Ó³ÌÐò¿ÉÒÔ³öÏÖÔÚ³ÌÐòµÄÈκεط½¡£¶¨Òå·½·¨Îª£º
sub subroutine{
statements;
}
¶þ¡¢µ÷ÓÃ
µ÷Ó÷½·¨ÈçÏ£º
1¡¢ÓÃ&µ÷ÓÃ
&subname;
...
sub subname{
...
}
2¡¢Ïȶ¨Òåºóµ÷ÓÃ
£¬¿ÉÒÔÊ¡ÂÔ&·ûºÅ
sub subname{
...
}
...
subname;
3¡¢Ç°ÏòÒýÓÃ
£¬Ïȶ¨Òå×Ó³ÌÐòÃû£¬ºóÃæÔÙ¶¨Òå×Ó³ÌÐòÌå
sub subname;
...
subname;
...
sub subname{
...
}
4¡¢ÓÃdoµ÷ÓÃ
do my_sub(1, 2, 3);µÈ¼ÛÓÚ&my_sub(1, 2, 3);
Èý¡¢·µ»ØÖµ
ȱʡµÄ£¬×Ó³ÌÐòÖÐ×îºóÒ»¸öÓï¾äµÄÖµ½«ÓÃ×÷·µ»ØÖµ¡£Óï¾äreturn
(retval);Ò²¿ÉÒÔÍÆ³ö×Ó³ÌÐò²¢·µ»ØÖµretval£¬retval¿ÉÒÔΪÁÐ±í¡£
ËÄ¡¢¾Ö²¿±äÁ¿
×Ó³ÌÐòÖоֲ¿±äÁ¿µÄ¶¨ÒåÓÐÁ½ÖÖ·½·¨£ºmyºÍlocal¡£ÆäÇø±ðÊÇ£ºmy¶¨ÒåµÄ±äÁ¿Ö»ÔÚ¸Ã×Ó³ÌÐòÖдæÔÚ£»¶ølocal¶¨ÒåµÄ±äÁ¿²»´æÔÚÓÚÖ÷³ÌÐòÖУ¬µ«´æÔÚÓÚ¸Ã×Ó³ÌÐòºÍ¸Ã×Ó³ÌÐòµ÷ÓõÄ×Ó³ÌÐòÖÐ(ÔÚPERL4ÖÐûÓÐmy)¡£¶¨Òåʱ¿ÉÒÔ¸øÆä¸³Öµ£¬È磺
my($scalar) = 43;
local(@array) = (1, 2, 3);
Îå¡¢×Ó³ÌÐò²ÎÊý´«µÝ
1¡¢ÐÎʽ
&sub1(&number1, $number2, $nubmer3);
...
sub sub1{
my($number1, $number2, $number3) = @_;
...
}
2¡¢´«ËÍÊý×é
&addlist (@mylist);
&addlist ("14", "6",
"11");
&addlist ($value1, @sublist, $value2);
...
sub addlist {
my (@list) = @_;
...
}
²ÎÊýΪÊý×éʱ£¬×Ó³ÌÐòÖ»½«Ëü¸³¸øÒ»¸öÊý×é±äÁ¿¡£Èç
sub twolists {
my (@list1, @list2) = @_;
}
ÖÐ@list2±ØÈ»Îª¿Õ¡£µ«¼òµ¥±äÁ¿ºÍÊý×é±äÁ¿¿ÉÒÔͬʱ´«µÝ£º
&twoargs(47, @mylist); # 47¸³¸ø$scalar£¬@mylist¸³¸ø@list
&twoargs(@mylist); # @mylistµÄµÚÒ»¸öÔªËØ¸³¸ø$scalar£¬ÆäÓàµÄÔªËØ¸³¸ø@list
...
sub twoargs {
my ($scalar, @list) = @_;
...
}
Áù¡¢µÝ¹é×Ó³ÌÐò
PERLÖУ¬×Ó³ÌÐò¿ÉÒÔ»¥Ïàµ÷Óã¬Æäµ÷Ó÷½·¨ÓëÉÏÊöÏàͬ£¬µ±µ÷ÓøÃ×Ó³ÌÐò±¾Éíʱ£¬¼´³ÉÁ˵ݹé×Ó³ÌÐò¡£µÝ¹é×Ó³ÌÐòÓÐÁ½¸öÌõ¼þ£º1¡¢³ýÁ˲»±»×Ó³ÌÐò¸Ä±äµÄ±äÁ¿Í⣬ËùÓеıäÁ¿±ØÐëµÄ¾Ö²¿µÄ£»2¡¢¸Ã×Ó³ÌÐòÒªº¬ÓÐÍ£Ö¹µ÷Óñ¾ÉíµÄ´úÂë¡£
Æß¡¢ÓñðÃû´«µÝÊý×é²ÎÊý
1¡¢ÓÃÇ°Ãæ½²µ½µÄµ÷Ó÷½·¨&my_sub(@array)½«°ÑÊý×é@arrayµÄÊý¾Ý¿½±´µ½×Ó³ÌÐòÖеıäÁ¿@_ÖУ¬µ±Êý×éºÜ´óʱ£¬½«»á»¨·Ñ½Ï¶àµÄ×ÊÔ´ºÍʱ¼ä£¬¶øÓñðÃû´«µÝ½«²»×öÕâЩ¹¤×÷£¬¶ø¶Ô¸ÃÊý×éÖ±½Ó²Ù×÷¡£ÐÎʽÈ磺
@myarray = (1, 2, 3, 4, 5);
&my_sub(*myarray);
sub my_sub {
my (*subarray) = @_;
}
2¡¢´Ë·½·¨ÀàËÆÓÚCÓïÑÔÖеĴ«µÝÊý×éµÄÆðʼµØÖ·Ö¸Õ룬µ«²¢²»Ò»Ñù£¬ÔÚ¶¨ÒåÊý×éµÄ±ðÃûÖ®ºó£¬Èç¹ûÓÐͬÃûµÄ¼òµ¥±äÁ¿£¬Ôò¶Ô¸Ã±äÁ¿Ò²ÊÇÆð×÷Óõġ£È磺
$foo = 26;
@foo = ("here's", "a",
"list");
&testsub (*foo);
...
sub testsub {
local (*printarray) = @_;
...
$printarray = 61;
}
µ±×Ó³ÌÐòÖ´ÐÐÍ꣬Ö÷³ÌÐòÖеÄ$fooµÄÖµÒѾ³ÉÁË61£¬¶ø²»ÔÙÊÇ26ÁË¡£
3¡¢ÓñðÃûµÄ·½·¨¿ÉÒÔ´«µÝ¶à¸öÊý×飬È磺
@array1 = (1, 2, 3);
@array2 = (4, 5, 6);
&two_array_sub (*array1, *array2);
sub two_array_sub {
my (*subarray1, *subarray2) = @_;
}
ÔÚ¸Ã×Ó³ÌÐòÖУ¬subarray1ÊÇarray1µÄ±ðÃû£¬subarray2ÊÇarray2µÄ±ðÃû¡£
°Ë¡¢Ô¤¶¨ÒåµÄ×Ó³ÌÐò
PERL5Ô¤¶¨ÒåÁËÈý¸ö×Ó³ÌÐò£¬·Ö±ðÔÚÌØ¶¨µÄʱ¼äÖ´ÐУ¬ËüÃÇÊÇ£ºBEGIN×Ó³ÌÐòÔÚ³ÌÐòÆô¶¯Ê±±»µ÷Óã»END×Ó³ÌÐòÔÚ³ÌÐò½áÊøÊ±±»µ÷Óã»AUTOLOAD×Ó³ÌÐòÔÚÕÒ²»µ½Ä³¸ö×Ó³ÌÐòʱ±»µ÷Óá£Äã¿ÉÒÔ×Ô¼º¶¨ÒåËüÃÇ£¬ÒÔÔÚÌØ¶¨Ê±¼äÖ´ÐÐËùÐèÒªµÄ¶¯×÷¡£È磺
BEGIN {
print("Hi! Welcome to
Perl!\n");
}
AUTOLOAD{
print("subroutine $AUTOLOAD not
found\n"); # ±äÁ¿$AUTOLOAD¼´Î´ÕÒµ½µÄ×Ó³ÌÐòÃû
print("arguments passed:
@_\n");
}
Èôͬһ¸öÔ¤¶¨Òå×Ó³ÌÐò¶¨ÒåÁ˶à¸ö£¬ÔòBEGIN˳ÐòÖ´ÐУ¬ENDÄæÐòÖ´ÐС£
ÉÏÒ»Õ ÏÂÒ»Õ Ŀ¼
|
|