¡¾×ªÌû¡¿perl½Ì³Ì
µÚÒ»½Ú£º»ù±¾ÉÏ£¬¼òµ¥±äÁ¿¾ÍÊÇÒ»¸öÊý¾Ýµ¥Ôª£¬Õâ¸öµ¥Ôª¿ÉÒÔÊÇÊý×Ö»ò×Ö·û´®¡£
Ò»¡¢ÕûÐÍ
1¡¢ÕûÐÍ
PERL×î³£Óõļòµ¥±äÁ¿£¬ÓÉÓÚÆäÓëÆäËüÓïÑÔ»ù±¾Ïàͬ£¬²»ÔÙ׸Êö¡£
Àý£º
$x = 12345;
if (1217 + 116 == 1333) {
# statement block goes here
}
ÕûÐ͵ÄÏÞÖÆ£º
PERLʵ¼ÊÉϰÑÕûÊý´æÔÚÄãµÄ¼ÆËã»úÖеĸ¡µã¼Ä´æÆ÷ÖУ¬ËùÒÔʵ¼ÊÉϱ»µ±×÷¸¡µãÊý¿´´ý¡£ÔÚ¶àÊý¼ÆËã»úÖУ¬¸¡µã¼Ä´æÆ÷¿ÉÒÔ´æÖüÔ¼16λÊý×Ö£¬³¤Óڴ˵ı»¶ªÆú¡£ÕûÊýʵΪ¸¡µãÊýµÄÌØÀý¡£
2¡¢8½øÖƺÍ16½øÖÆÊý
8½øÖÆÒÔ0´òÍ·£¬16½øÖÆÒÔ0x´òÍ·¡£
Àý£º$var1 = 047; (µÈÓÚÊ®½øÖƵÄ39)
$var2 = 0x1f; (µÈÓÚÊ®½øÖƵÄ31)
¶þ¡¢¸¡µãÊý
Èç 11.4 ¡¢ -0.3 ¡¢.3 ¡¢ 3. ¡¢ 54.1e+02 ¡¢ 5.41e03
¸¡µã¼Ä´æÆ÷ͨ³£²»Äܾ«È·µØ´æÖü¸¡µãÊý£¬´Ó¶ø²úÉúÎó²î£¬ÔÚÔËËãºÍ±È½ÏÖÐÒªÌØ±ð×¢Òâ¡£Ö¸ÊýµÄ·¶Î§Í¨³£Îª-309µ½+308¡£
Àý£º
#!/usr/local/bin/perl
$value = 9.01e+21 + 0.01 - 9.01e+21;
print ("first value is ", $value, "\n");
$value = 9.01e+21 - 9.01e+21 + 0.01;
print ("second value is ", $value, "\n");
---------------------------------------------------------
$ program3_3
first value is 0
second value is 0.01
Èý¡¢×Ö·û´®
¹ßÓÃCµÄ³ÌÐòԱҪעÒ⣬ÔÚPERLÖУ¬×Ö·û´®µÄĩβ²¢²»º¬ÓÐÒþº¬µÄNULL×Ö·û£¬NULL×Ö·û¿ÉÒÔ³öÏÖÔÚ´®µÄÈκÎλÖá£
. Ë«ÒýºÅÄÚµÄ×Ö·û´®ÖÐÖ§³Ö¼òµ¥±äÁ¿Ìæ»»£¬ÀýÈ磺
$number = 11;
$text = "This text contains the number $number.";
Ôò$textµÄÄÚÈÝΪ£º"This text contains the number 11."
.Ë«ÒýºÅÄÚµÄ×Ö·û´®ÖÐÖ§³ÖתÒå×Ö·û
Table 3.1. Escape sequences in strings.
Escape Sequence Description
\a Bell (beep)
\b Backspace
\cn The Ctrl+n character
\e Escape
\E Ends the effect of \L, \U or \Q
\f Form feed
\l Forces the next letter into lowercase
\L All following letters are lowercase
\n Newline
\r Carriage return
\Q Do not look for special pattern characters
\t Tab
\u Force next letter into uppercase
\U All following letters are uppercase
\v Vertical tab
\L¡¢\U¡¢\Q¹¦ÄÜ¿ÉÒÔÓÉ\E¹Ø±Õµô£¬È磺
$a = "T\LHIS IS A \ESTRING"; # same as "This is a STRING"
.ÒªÔÚ×Ö·û´®Öаüº¬Ë«ÒýºÅ»ò·´Ð±Ïߣ¬ÔòÔÚÆäǰ¼ÓÒ»¸ö·´Ð±Ïߣ¬·´Ð±Ïß»¹¿ÉÒÔÈ¡Ïû±äÁ¿Ìæ»»£¬È磺
$res = "A quote \" and A backslash \\";
$result = 14;
print ("The value of \$result is $result.\n")µÄ½á¹ûΪ£º
The value of $result is 14.
.¿ÉÓÃ\nnn(8½øÖÆ)»ò\xnn(16½øÖÆ)À´±íʾASCII×Ö·û£¬È磺
$result = "\377"; # this is the character 255,or EOF
$result = "\xff"; # this is also 255
.µ¥ÒýºÅ×Ö·û´®
µ¥ÒýºÅ×Ö·û´®ÓëË«ÒýºÅ×Ö·û´®ÓÐÁ½¸öÇø±ð£¬Ò»ÊÇûÓбäÁ¿Ìæ»»¹¦ÄÜ£¬¶þÊÇ·´Ð±Ïß²»Ö§³ÖתÒå×Ö·û£¬¶øÖ»ÔÚ°üº¬µ¥ÒýºÅºÍ·´Ð±ÏßʱÆð×÷Óᣵ¥ÒýºÅÁíÒ»¸öÌØÐÔÊÇ¿ÉÒÔ¿ç¶àÐУ¬È磺
$text = 'This is two
lines of text
';
ÓëϾäµÈЧ£º
$text = "This is two\nlines of text\n";
.×Ö·û´®ºÍÊýÖµµÄ»¥Ïàת»»
Àý1£º
$string = "43";
$number = 28;
$result = $string + $number; # $result = 71
Èô×Ö·û´®Öк¬ÓзÇÊý×ÖµÄ×Ö·û£¬Ôò´Ó×óÆðÖÁµÚÒ»¸ö·ÇÊý×ÖµÄ×Ö·û£¬È磺
$result = "hello" * 5; # $result = 0
$result = "12a34" +1; # $result = 13
.±äÁ¿³õʼֵ
ÔÚPERLÖУ¬ËùÓеļòµ¥±äÁ¿¶¼ÓÐȱʡ³õʼֵ£º""£¬¼´¿Õ×Ö·û¡£µ«Êǽ¨Ò鏸ËùÓбäÁ¿¸³³õÖµ£¬·ñÔòµ±³ÌÐò±äµÃ´ó¶ø¸´ÔӺ󣬺ÜÈÝÒ׳öÏÖ²»¿ÉÔ¤ÁÏÇÒºÜÄѵ÷ÊԵĴíÎó¡£
µÚ¶þ½Ú£º
Ò»¡¢ËãÊõ²Ù×÷·û £º+(¼Ó)¡¢-(¼õ)¡¢*(³Ë)¡¢/(³ý)¡¢**(³ËÃÝ)¡¢%(È¡Óà)¡¢-(µ¥Ä¿¸º)
(1)³ËÃݵĻùÊý²»ÄÜΪ¸º£¬Èç (-5) ** 2.5 # error£»
(2)³ËÃݽá¹û²»Äܳ¬³ö¼ÆËã»ú±íʾµÄÏÞÖÆ£¬Èç10 ** 999999 # error
(3)È¡ÓàµÄ²Ù×÷ÊýÈç²»ÊÇÕûÊý£¬ËÄÉáÎåÈë³ÉÕûÊýºóÔËË㣻ÔËËã·ûÓҲ಻ÄÜΪÁã
(4)µ¥Ä¿¸º¿ÉÓÃÓÚ±äÁ¿£º - $y ; # µÈЧÓÚ $y * -1
¶þ¡¢ÕûÊý±È½Ï²Ù×÷·û
¡¡
Table 3.1. ÕûÊý±È½Ï²Ù×÷·û
²Ù×÷·û ÃèÊö
< СÓÚ
> ´óÓÚ
== µÈÓÚ
<= СÓÚµÈÓÚ
>= ´óÓÚµÈÓÚ
!= ²»µÈÓÚ
<=> ±È½Ï£¬·µ»Ø 1, 0, or -1
²Ù×÷·û<=>½á¹ûΪ£º
0 - Á½¸öÖµÏàµÈ
1 - µÚÒ»¸öÖµ´ó
1 - µÚ¶þ¸öÖµ´ó
Èý¡¢×Ö·û´®±È½Ï²Ù×÷·û
Table 3.2. ×Ö·û´®±È½Ï²Ù×÷·û
²Ù×÷·û ÃèÊö ¡¡
lt СÓÚ ¡¡
gt ´óÓÚ ¡¡
eq µÈÓÚ ¡¡
le СÓÚµÈÓÚ ¡¡
ge ´óÓÚµÈÓÚ ¡¡
ne ²»µÈÓÚ ¡¡
cmp ±È½Ï£¬·µ»Ø 1, 0, or -1 ¡¡
ËÄ¡¢Âß¼²Ù×÷·û
Âß¼»ò£º$a || $b »ò $a or $b
Âß¼Ó룺$a && $b »ò $a and $b
Âß¼·Ç£º! $a »ò not $a
Âß¼Òì»ò£º$a xor $b
Î塢λ²Ù×÷·û
λÓ룺&
λ»ò£º|
λ·Ç£º~
λÒì»ò£º^
×óÒÆ£º$x << 1
ÓÒÒÆ£º$x >> 2
×¢£º²»Òª½«&ÓÃÓÚ¸ºÕûÊý£¬ÒòΪPERL½«»á°ÑËüÃÇת»¯ÎªÎÞ·ûºÅÊý¡£
Áù¡¢¸³Öµ²Ù×÷·û
Table 3.3. ¸³Öµ²Ù×÷·û
²Ù×÷·û ÃèÊö
= Assignment only
+= Addition and assignment
-= Subtraction and assignment
*= Multiplication and assignment
/= Division and assignment
%= Remainder and assignment
**= Exponentiation and assignment
&= Bitwise AND and assignment
|= Bitwise OR and assignment
^= Bitwise XOR and assignment
Table 3.4. ¸³Öµ²Ù×÷·ûÀý×Ó
±í´ïʽ µÈЧ±í´ïʽ
$a = 1; none (basic assignment)
$a -= 1; $a = $a - 1;
$a *= 2; $a = $a * 2;
$a /= 2; $a = $a / 2;
$a %= 2; $a = $a % 2;
$a **= 2; $a = $a ** 2;
$a &= 2; $a = $a & 2;
$a |= 2; $a = $a | 2;
$a ^= 2; $a = $a ^ 2;
.=¿ÉÔÚÒ»¸ö¸³ÖµÓï¾äÖгöÏÖ¶à´Î£¬È磺
$value1 = $value2 = "a string";
.=×÷Ϊ×Ó±í´ïʽ
($a = $b) += 3;
µÈ¼ÛÓÚ
$a = $b;
$a += 3;
µ«½¨Ò鲻ҪʹÓÃÕâÖÖ·½Ê½¡£
Æß¡¢×ÔÔö×Ô¼õ²Ù×÷·û £º++¡¢--(ÓëC++ÖеÄÓ÷¨Ïàͬ)
.²»ÒªÔÚ±äÁ¿Á½±ß¶¼Ê¹ÓôËÖÖ²Ù×÷·û£º++$var-- # error
.²»ÒªÔÚ±äÁ¿×ÔÔö/¼õºóÔÚͬһ±í´ïʽÖÐÔÙ´ÎʹÓãº$var2 = $var1 + ++$var1; # error
.ÔÚPERLÖÐ++¿ÉÓÃÓÚ×Ö·û´®£¬µ«µ±½áβ×Ö·ûΪ'z'¡¢'Z'¡¢'9'ʱ½øÎ»£¬È磺
$stringvar = "abc";
$stringvar++; # $stringvar contains "abd" now
$stringvar = "aBC";
$stringvar++; # $stringvar contains "aBD" now
$stringvar = "abz";
$stringvar++; # $stringvar now contains "aca"
$stringvar = "AGZZZ";
$stringvar++; # $stringvar now contains "AHAAA"
$stringvar = "ab4";
$stringvar++; # $stringvar now contains "ab5"
$stringvar = "bc999";
$stringvar++; # $stringvar now contains "bd000"
.²»ÒªÊ¹ÓÃ--£¬PERL½«ÏȽ«×Ö·û´®×ª»»ÎªÊý×ÖÔÙ½øÐÐ×Ô¼õ
$stringvar = "abc";
$stringvar--; # $stringvar = -1 now
.Èç¹û×Ö·û´®Öк¬ÓзÇ×ÖĸÇÒ·ÇÊý×ÖµÄ×Ö·û£¬»òÊý×ÖλÓÚ×ÖĸÖУ¬Ôò¾¹ý++ÔËËãǰֵת»»ÎªÊý×ÖÁ㣬Òò´Ë½á¹ûΪ1£¬È磺
$stringvar = "ab*c";
$stringvar++;
$stringvar = "ab5c";
$stringvar++;
°Ë¡¢×Ö·û´®Áª½áºÍÖØ¸´²Ù×÷·û
Áª½Ó: .
ÖØ¸´£ºx
Áª½ÓÇÒ¸³Öµ(ÀàËÆ+=)£º .=
Àý£º
$newstring = "potato" . "head";
$newstring = "t" x 5;
$a = "be";
$a .= "witched"; # $a is now "bewitched"
¾Å¡¢¶ººÅ²Ù×÷·û
ÆäÇ°ÃæµÄ±í´ïʽÏȽøÐÐÔËË㣬È磺
$var1 += 1, $var2 = $var1;
µÈ¼ÛÓÚ
$var1 += 1;
$var2 = $var1;
ʹÓô˲Ù×÷·ûµÄΨһÀíÓÉÊÇÌá¸ß³ÌÐòµÄ¿É¶ÁÐÔ£¬½«¹ØÏµÃÜÇеÄÁ½¸ö±í´ïʽ½áºÏÔÚÒ»Æð£¬È磺
$val = 26;
$result = (++$val, $val + 5); # $result = 32
×¢ÒâÈç¹û´Ë´¦Ã»ÓÐÀ¨ºÅÔòÒâÒ岻ͬ£º
$val = 26;
$result = ++$val, $val + 5; # $result = 27
Ê®¡¢Ìõ¼þ²Ù×÷·û
ÓëCÖÐÀàËÆ£¬Ìõ¼þ?Öµ1:Öµ2£¬µ±Ìõ¼þÎªÕæÊ±È¡Öµ1£¬Îª¼Ùʱȡֵ2£¬È磺
$result = $var == 0 ? 14 : 7;
$result = 43 + ($divisor == 0 ? 0 : $dividend / $divisor);
PERL 5ÖУ¬»¹¿ÉÒÔÔÚ¸³ÖµÊ½×ó±ßʹÓÃÌõ¼þ²Ù×÷·ûÀ´Ñ¡Ôñ±»¸³ÖµµÄ±äÁ¿£¬È磺
$condvar == 43 ? $var1 : $var2 = 14;
$condvar == 43 ? $var1 = 14 : $var2 = 14;
ʮһ¡¢²Ù×÷·ûµÄ´ÎÐò
Table 3.6. ²Ù×÷·û´ÎÐò
²Ù×÷·û ÃèÊö
++, -- ×ÔÔö£¬×Ô¼õ
-, ~, ! µ¥Ä¿
** ³Ë·½
=~, !~ ģʽƥÅä
*, /, %, x ³Ë£¬³ý£¬È¡Óà£¬ÖØ¸´
+, -, . ¼Ó£¬¼õ£¬Áª½Ó
<<, >> ÒÆÎ»
-e, -r, etc. Îļþ״̬
<, <=, >, >=, lt, le, gt, ge ²»µÈ±È½Ï
==, !=, <=>, eq, ne, cmp ÏàµÈ±È½Ï
& λÓë
|, ^ λ»ò£¬Î»Òì»ò
&& Âß¼Óë
|| Âß¼»ò
.. ÁÐ±í·¶Î§
? and : Ìõ¼þ²Ù×÷·û
=, +=, -=, *=, ¸³Öµ
and so on ¡¡
, ¶ººÅ²Ù×÷·û
not Low-precedence logical NOT
and Low-precedence logical AND
or, xor Low-precedence logical OR and XOR
.²Ù×÷·û½áºÏÐÔ(associativity)£º
Table 3.7. ²Ù×÷·û½áºÏÐÔ
²Ù×÷·û ½áºÏÐÔ
++, -- ÎÞ
-, ~, ! Right-to-left
** Right-to-left
=~, !~ Left-to-right
*, /, %, x Left-to-right
+, -, . Left-to-right
<<, >> Left-to-right
-e, -r, ÎÞ
<, <=, >, >=, lt, le, gt, ge Left-to-right
==, !=, <=>, eq, ne, cmp Left-to-right
& Left-to-right
|, ^ Left-to-right
&& Left-to-right
|| Left-to-right
.. Left-to-right
? and : Right-to-left
=, +=, -=, *=, Right-to-left
and so on ¡¡
, Left-to-right
not Left-to-right
and Left-to-right
or, xor Left-to-right
½¨Ò飺
1¡¢µ±Ä㲻ȷ¶¨Ä³²Ù×÷·ûÊÇ·ñÏÈÖ´ÐÐʱ£¬Ò»¶¨ÒªÓÃÀ¨ºÅÃ÷È·Ö®¡£
2¡¢ÓöàÐС¢¿Õ¸ñµÈ·½Ê½Ìá¸ß³ÌÐòµÄ¿É¶ÁÐÔ¡£
µÚÈý½Ú£º
Ò»¡¢Áбí
ÁбíÊǰüº¬ÔÚÀ¨ºÅÀïµÄÒ»ÐòÁеÄÖµ£¬¿ÉÒÔΪÈκÎÊýÖµ£¬Ò²¿ÉΪ¿Õ£¬È磺(1, 5.3 , "hello" , 2)£¬¿ÕÁÐ±í£º()¡£
×¢£ºÖ»º¬ÓÐÒ»¸öÊýÖµµÄÁбí(È磺(43.2) )Óë¸ÃÊýÖµ±¾Éí(¼´£º43.2 )ÊDz»Í¬µÄ£¬µ«ËüÃÇ¿ÉÒÔ»¥Ïàת»¯»ò¸³Öµ¡£
ÁбíÀý£º
(17, $var, "a string")
(17, 26 << 2)
(17, $var1 + $var2)
($value, "The answer is $value")
¶þ¡¢Êý×é--ÁбíµÄ´æÖü
ÁÐ±í´æÖüÓÚÊý×é±äÁ¿ÖУ¬Óë¼òµ¥±äÁ¿²»Í¬£¬Êý×é±äÁ¿ÒÔ×Ö·û"@"´òÍ·£¬È磺
@array = (1, 2, 3);
×¢£º
(1)Êý×é±äÁ¿´´½¨Ê±³õʼֵΪ¿ÕÁÐ±í£º()¡£
(2)ÒòΪPERLÓÃ@ºÍ$À´Çø·ÖÊý×é±äÁ¿ºÍ¼òµ¥±äÁ¿£¬ËùÒÔͬһ¸öÃû×Ö¿ÉÒÔͬʱÓÃÓÚÊý×é±äÁ¿ºÍ¼òµ¥±äÁ¿£¬È磺
$var = 1;
@var = (11, 27.1 , "a string");
µ«ÕâÑùºÜÈÝÒ×»ìÏý£¬¹Ê²»ÍƼö¡£
1¡¢Êý×éµÄ´æÈ¡
.¶ÔÊý×éÖеÄֵͨ¹ýÏÂ±ê´æÈ¡£¬µÚÒ»¸öÔªËØÏ±êΪ0¡£ÊÔͼ·ÃÎʲ»´æÔÚµÄÊý×éÔªËØ£¬Ôò½á¹ûΪNULL£¬µ«Èç¹û¸ø³¬³öÊý×é´óСµÄÔªËØ¸³Öµ£¬ÔòÊý×é×Ô¶¯Ôö³¤£¬ÔÀ´Ã»ÓеÄÔªËØÖµÎªNULL¡£È磺
@array = (1, 2, 3, 4);
$scalar = $array[0];
$array[3] = 5; # now @array is (1,2,3,5)
$scalar = $array[4]; # now $scalar = null;
$array[6] = 17; # now @array is (1,2,3,5,"","",17)
.Êý×é¼ä¿½±´
@result = @original;
.ÓÃÊý×鏸ÁÐ±í¸³Öµ
@list1 = (2, 3, 4);
@list2 = (1, @list1, 5); # @list2 = (1, 2, 3, 4, 5)
.Êý×é¶Ô¼òµ¥±äÁ¿µÄ¸³Öµ
(1) @array = (5, 7, 11);
($var1, $var2) = @array; # $var1 = 5, $var2 = 7, 11±»ºöÂÔ
(2) @array = (5, 7);
($var1, $var2, $var3) = @array; # $var1 = 5, $var2 = 7, $var3 ="" (null)
.´Ó±ê×¼ÊäÈë(STDIN)¸ø±äÁ¿¸³Öµ
$var = <STDIN>;
@array = <STDIN>; # ^DΪ½áÊøÊäÈëµÄ·ûºÅ
2 ¡¢×Ö·û´®Öеķ½À¨ºÅºÍ±äÁ¿Ìæ»»
"$var[0]" ΪÊý×é@varµÄµÚÒ»¸öÔªËØ¡£
"$var[0]" ½«×Ö·û"["תÒ壬µÈ¼ÛÓÚ"$var". "[0]"£¬$var±»±äÁ¿Ìæ»»£¬[0]±£³Ö²»±ä¡£
"${var}[0]" ÒàµÈ¼ÛÓÚ"$var" ."[0]"¡£
"${var}"ÔòÈ¡ÏûÁË´óÀ¨ºÅµÄ±äÁ¿Ìæ»»¹¦ÄÜ£¬°üº¬ÎÄ×Ö£º${var}.
3¡¢ÁÐ±í·¶Î§£º
(1..10) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
(2, 5..7, 11) = (2, 5, 6, 7, 11)
(3..3) = (3)
.ÓÃÓÚʵÊý
(2.1..5.3) = (2.1, 3.1 ,4.1, 5.1)
(4.5..1.6) = ()
.ÓÃÓÚ×Ö·û´®
("aaa".."aad") = ("aaa","aab", "aac", "aad")
@day_of_month = ("01".."31")
.¿É°üº¬±äÁ¿»ò±í´ïʽ
($var1..$var2+5)
.С¼¼ÇÉ£º
$fred = "Fred";
print (("Hello, " . $fred . "!n") x 2);
Æä½á¹ûΪ£º
Hello, Fred!
Hello, Fred!
4¡¢Êý×éµÄÊä³ö£º
(1) @array = (1, 2, 3);
print (@array, "n");
½á¹ûΪ£º
123
(2) @array = (1, 2, 3);
print ("@arrayn");
½á¹ûΪ£º
1 2 3
5¡¢Áбí/Êý×éµÄ³¤¶È
µ±Êý×é±äÁ¿³öÏÖÔÚÔ¤ÆÚ¼òµ¥±äÁ¿³öÏֵĵط½£¬ÔòPERL½âÊÍÆ÷È¡Æä³¤¶È¡£
@array = (1, 2, 3);
$scalar = @array; # $scalar = 3,¼´@arrayµÄ³¤¶È
($scalar) = @array; # $scalar = 1,¼´@arrayµÚÒ»¸öÔªËØµÄÖµ
×¢£ºÒÔÊý×éµÄ³¤¶ÈΪѻ·´ÎÊý¿ÉÈçϱà³Ì£º
$count = 1;
while ($count <= @array) {
print ("element $count: $array[$count-1]n");
$count++;
}
6¡¢×ÓÊý×é
@array = (1, 2, 3, 4, 5);
@subarray = @array[0,1]; # @subarray = (1, 2)
@subarray2 = @array[1..3]; # @subarray2 = (2,3,4)
@array[0,1] = ("string", 46); # @array =("string",46,3,4,5) now
@array[0..3] = (11, 22, 33, 44); # @array = (11,22,33,44,5) now
@array[1,2,3] = @array[3,2,4]; # @array = (11,44,33,5,5) now
@array[0..2] = @array[3,4]; # @array = (5,5,"",5,5) now
¿ÉÒÔÓÃ×ÓÊý×éÐÎʽÀ´½»»»ÔªËØ£º
@array[1,2] = @array[2,1];
7¡¢ÓйØÊý×éµÄ¿âº¯Êý
(1)sort--°´×Ö·û˳ÐòÅÅÐò
@array = ("this", "is", "a","test");
@array2 = sort(@array); # @array2 = ("a","is", "test", "this")
@array = (70, 100, 8);
@array = sort(@array); # @array = (100, 70, 8) now
( 2)reverse--·´×ªÊý×é
@array2 = reverse(@array);
@array2 = reverse sort (@array);
(3)chop--Êý×éȥβ
chopµÄÒâÒåÊÇÈ¥µôSTDIN£¨¼üÅÌ£©ÊäÈë×Ö·û´®Ê±×îºóÒ»¸ö×Ö·û--»»Ðзû¡£¶øÈç¹ûËü×÷Óõ½Êý×éÉÏ£¬Ôò½«Êý×éÖÐÿһ¸öÔªËØ¶¼×öÈç´Ë´¦Àí¡£
@list = ("rabbit", "12345","quartz");
chop (@list); # @list = ("rabbi", "1234","quart") now
( 4)join/split--Á¬½Ó/²ð·Ö
joinµÄµÚÒ»¸ö²ÎÊýÊÇÁ¬½ÓËùÓõÄÖмä×Ö·û£¬ÆäÓàÔòΪ´ýÁ¬½ÓµÄ×Ö·ûÊý×é¡£
$string = join(" ", "this", "is","a", "string"); # ½á¹ûΪ"this is a string"
@list = ("words","and");
$string = join("::", @list, "colons"); #½á¹ûΪ"words::and::colons"
@array = split(/::/,$string); # @array = ("words","and", "colons") now
¡¡
µÚËĽڣº
Ò»¡¢Ìõ¼þÅжÏ
if ( <expression>) {
<statement_block_1>
}
elsif ( <expression> ) {
<statement_block_2>
}
...
else{
<statement_block_3>
}
¶þ¡¢Ñ»·£º
1¡¢whileÑ»·
while ( <expression> ) {
<statement_block>
}
2¡¢untilÑ»·
until ( <expression> ) {
<statement_block>
}
3¡¢ÀàCµÄforÑ»· £¬Èç
for ($count=1; $count <= 5; $count++) {
# statements inside the loop go here
}
ÏÂÃæÊÇÔÚforÑ»·ÖÐʹÓöººÅ²Ù×÷·ûµÄÀý×Ó£º
for ($line = <STDIN>, $count = 1; $count <= 3; $line = <STDIN>, $count++) {
print ($line);
}
ËüµÈ¼ÛÓÚÏÂÁÐÓï¾ä£º
$line = <STDIN>;
$count = 1;
while ($count <= 3) {
print ($line);
$line = <STDIN>;
$count++;
}
4¡¢Õë¶ÔÁбí(Êý×é)ÿ¸öÔªËØµÄÑ»·£ºforeach£¬Ó﷨Ϊ£º
foreach localvar (listexpr) {
statement_block;
}
Àý£º
foreach $word (@words) {
if ($word eq "the") {
print ("found the word 'the'n");
}
}
×¢£º
(1)´Ë´¦µÄÑ»·±äÁ¿localvarÊǸö¾Ö²¿±äÁ¿£¬Èç¹ûÔÚ´Ë֮ǰËüÒÑÓÐÖµ£¬ÔòÑ»·ºóÈÔ»Ö¸´¸ÃÖµ¡£
(2)ÔÚÑ»·Öиıä¾Ö²¿±äÁ¿£¬ÏàÓ¦µÄÊý×é±äÁ¿Ò²»á¸Ä±ä£¬È磺
@list = (1, 2, 3, 4, 5);
foreach $temp (@list) {
if ($temp == 2) {
$temp = 20;
}
}
´Ëʱ@listÒѱä³ÉÁË(1, 20, 3, 4, 5)¡£
5¡¢doÑ»·
do {
statement_block
} while_or_until (condexpr);
doÑ»·ÖÁÉÙÖ´ÐÐÒ»´ÎÑ»·¡£
6¡¢Ñ»·¿ØÖÆ
Í˳öÑ»·Îªlast£¬ÓëCÖеÄbreak×÷ÓÃÏàͬ£»Ö´ÐÐÏÂÒ»¸öÑ»·Îªnext£¬ÓëCÖеÄcontinue×÷ÓÃÏàͬ£»PERLÌØÓеÄÒ»¸öÃüÁîÊÇredo£¬Æäº¬ÒåÊÇÖØ¸´´Ë´ÎÑ»·£¬¼´Ñ»·±äÁ¿²»±ä£¬»Øµ½Ñ»·Æðʼµã£¬µ«Òª×¢Ò⣬redoÃüÁîÔÚdoÑ»·Öв»Æð×÷Óá£
7¡¢´«Í³µÄgoto label;Óï¾ä¡£
Èý¡¢µ¥ÐÐÌõ¼þ
Ó﷨Ϊstatement keyword condexpr¡£ÆäÖÐkeyword¿ÉΪif¡¢unless¡¢while»òuntil£¬È磺
print ("This is zero.n") if ($var == 0);
print ("This is zero.n") unless ($var != 0);
print ("Not zero yet.n") while ($var-- > 0);
print ("Not zero yet.n") until ($var-- == 0);
ËäÈ»Ìõ¼þÅжÏдÔÚºóÃæ£¬µ«È´ÊÇÏÈÖ´Ðеġ£ µÚÎå½Ú£º
Ò»¡¢¶¨Òå
×Ó³ÌÐò¼´Ö´ÐÐÒ»¸öÌØÊâÈÎÎñµÄÒ»¶Î·ÖÀëµÄ´úÂ룬Ëü¿ÉÒÔʹ¼õÉÙÖØ¸´´úÂëÇÒʹ³ÌÐòÒ×¶Á¡£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 foundn"); # ±äÁ¿$AUTOLOAD¼´Î´ÕÒµ½µÄ×Ó³ÌÐòÃû
print("arguments passed: @_n");
}
Èôͬһ¸öÔ¤¶¨Òå×Ó³ÌÐò¶¨ÒåÁ˶à¸ö£¬ÔòBEGIN˳ÐòÖ´ÐУ¬ENDÄæÐòÖ´ÐС£
¡¡
µÚÁù½Ú£º
Ò»¡¢Êý×é±äÁ¿µÄÏÞÖÆ
ÔÚÇ°Ãæ½²µÄÊý×é±äÁ¿ÖУ¬¿ÉÒÔͨ¹ýϱê·ÃÎÊÆäÖеÄÔªËØ¡£ÀýÈ磬ÏÂÁÐÓï¾ä·ÃÎÊÊý×é@arrayµÄµÚÈý¸öÔªËØ£º
$scalar = $array[2];
ËäÈ»Êý×éºÜÓÐÓ㬵«ËüÃÇÓÐÒ»¸öÏÔÖøÈ±ÏÝ£¬¼´ºÜÄѼÇסÄĸöÔªËØ´æÖüµÄʲôÄÚÈÝ¡£¼ÙÈçÎÒÃÇÀ´Ð´Ò»¸ö³ÌÐò¼ÆËãijÎļþÖÐÊ××Öĸ´óдµÄµ¥´Ê³öÏֵĴÎÊý£¬ÓÃÊý×éÀ´ÊµÏ־ͱȽÏÀ§ÄÑ£¬³ÌÐò´úÂëÈçÏ£º
1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = <STDIN>) {
4 : while ($inputline =~ /b[A-Z]S+/g) {
5 : $word = $&;
6 : $word =~ s/[;.,:-]$//; # remove punctuation
7 : for ($count = 1; $count <= @wordlist;
8 : $count++) {
9 : $found = 0;
10: if ($wordlist[$count-1] eq $word) {
11: $found = 1;
12: $wordcount[$count-1] += 1;
13: last;
14: }
15: }
16: if ($found == 0) {
17: $oldlength = @wordlist;
18: $wordlist[$oldlength] = $word;
19: $wordcount[$oldlength] = 1;
20: }
21: }
22: }
23: print ("Capitalized words and number of occurrences:n");
24: for ($count = 1; $count <= @wordlist; $count++) {
25: print ("$wordlist[$count-1]: $wordcount[$count-1]n");
26: }
ÔËÐнá¹ûÈçÏ£º
Here is a line of Input.
This Input contains some Capitalized words.
^D
Capitalized words and number of occurrences:
Here: 1
Input: 2
This: 1
Capitalized: 1
Õâ¸ö³ÌÐòÿ´Î´Ó±ê×¼ÊäÈëÎļþ¶ÁÒ»ÐÐÎÄ×Ö£¬µÚËÄÐÐÆðµÄÑ»·Æ¥ÅäÿÐÐÖÐÊ××Öĸ´óдµÄµ¥´Ê£¬Ã¿ÕÒµ½Ò»¸öÑ»·Ò»´Î£¬¸³¸ø¼òµ¥±äÁ¿$word¡£ÔÚµÚÁùÐÐÖÐÈ¥µô±êµãºó£¬²é¿´¸Ãµ¥´ÊÊÇ·ñÔø³öÏÖ¹ý£¬7~15ÐÐÖÐÔÚ@wordlistÖа¤¸öÔªËØ×ö´Ë¼ì²é£¬Èç¹ûij¸öÔªËØÓë$wordÏàµÈ£¬@wordcountÖÐÏàÓ¦µÄÔªËØ¾ÍÔö¼ÓÒ»¸öÊý¡£Èç¹ûûÓгöÏÖ¹ý£¬¼´@wordlistÖÐûÓÐÔªËØÓë$wordÏàµÈ£¬16~20Ðиø@wordlistºÍ@wordcountÔö¼ÓÒ»¸öÐÂÔªËØ¡£
¶þ¡¢¶¨Òå
ÕýÈçÄãËù¿´µ½µÄ£¬Ê¹ÓÃÊý×éÔªËØ²úÉúÁËһЩÎÊÌâ¡£Ê×ÏÈ£¬@wordlistÖÐÄĸöÔªËØ¶ÔÓ¦×ÅÄĸöµ¥´Ê²¢²»Ã÷ÏÔ£»¸üÔãµÄÊÇ£¬Ã¿¶Á½øÒ»¸öе¥´Ê£¬³ÌÐò±ØÐë¼ì²éÕû¸öÁбí²ÅÄÜÖªµÀ¸Ãµ¥´ÊÊÇ·ñÔø¾³öÏÖ¹ý£¬µ±Áбí±äµÃ½Ï´óʱ£¬ÕâÊǺܺķÑʱ¼äµÄ¡£
ÕâЩÎÊÌâ²úÉúµÄÔÒòÊÇÊý×éÔªËØÍ¨¹ýÊý×Öϱê·ÃÎÊ£¬ÎªÁ˽â¾öÕâÀàÎÊÌ⣬Perl¶¨ÒåÁËÁíÒ»ÖÖÊý×飬¿ÉÒÔÓÃÈÎÒâ¼òµ¥±äÁ¿ÖµÀ´·ÃÎÊÆäÔªËØ£¬ÕâÖÖÊý×é½Ð×ö¹ØÁªÊý×飬Ҳ½Ð¹þÏ£±í¡£
ΪÁËÇø·Ö¹ØÁªÊý×é±äÁ¿ÓëÆÕͨµÄÊý×é±äÁ¿£¬PerlʹÓÃ%×÷ΪÆäÊ××Ö·û£¬¶øÊý×é±äÁ¿ÒÔ@´òÍ·¡£ÓëÆäËü±äÁ¿ÃûÒ»Ñù£¬%ºóµÄµÚÒ»¸ö×Ö·û±ØÐëΪ×Öĸ£¬ºóÐø×Ö·û¿ÉÒÔΪ×Öĸ¡¢Êý×Ö»òÏ»®Ïß¡£
Èý¡¢·ÃÎʹØÁªÊý×éµÄÔªËØ
¹ØÁªÊý×éµÄϱê¿ÉÒÔΪÈκμòµ¥/±êÁ¿Öµ£¬·ÃÎʵ¥¸öÔªËØÊ±ÒÔ$·ûºÅ´òÍ·£¬Ï±êÓôóÀ¨ºÅΧÆðÀ´¡£ÀýÈ磺
$fruit{"bananas"}
$number{3.14159}
$integer{-7}
¼òµ¥±äÁ¿Ò²¿É×÷Ϊϱ꣬È磺
$fruit{$my_fruit}
ËÄ¡¢Ôö¼ÓÔªËØ
´´½¨Ò»¸ö¹ØÁªÊý×éÔªËØ×î¼òµ¥µÄ·½·¨ÊǸ³Öµ£¬ÈçÓï¾ä$fruit{"bananas"} = 1£» °Ñ1¸³¸ø¹ØÁªÊý×é%fruitϱêΪbananasµÄÔªËØ£¬Èç¹û¸ÃÔªËØ²»´æÔÚ£¬Ôò±»´´½¨£¬Èç¹ûÊý×é%fruit´ÓδʹÓùý£¬Ò²±»´´½¨¡£
ÕâÒ»ÌØÐÔʹµÃ¹ØÁªÊý×éºÜÈÝÒ×ÓÃÓÚ¼ÆÊý¡£ÏÂÃæÎÒÃÇÓùØÁªÊý×é¸ÄдÉÏÃæµÄ³ÌÐò£¬×¢ÒâʵÏÖͬÑùµÄ¹¦Äܴ˳ÌÐò¼ò»¯ÁËÐí¶à¡£
1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = ) {
4 : while ($inputline =~ /b[A-Z]S+/g) {
5 : $word = $&;
6 : $word =~ s/[;.,:-]$//; # remove punctuation
7 : $wordlist{$word} += 1;
8 : }
9 : }
10: print ("Capitalized words and number of occurrences:n");
11: foreach $capword (keys(%wordlist)) {
12: print ("$capword: $wordlist{$capword}n");
13: }
ÔËÐнá¹ûÈçÏ£º
Here is a line of Input.
This Input contains some Capitalized words.
^D
Capitalized words and number of occurrences:
This: 1
Input: 2
Here: 1
Capitalized: 1
Äã¿ÉÒÔ¿´µ½£¬Õâ´Î³ÌÐò¼òµ¥¶àÁË£¬¶ÁÈ¡ÊäÈë²¢´æÖü¸÷µ¥´ÊÊýÄ¿´Ó20ÐмõÉÙµ½ÁË7ÐС£
±¾³ÌÐòÓùØÁªÊý×é%wordlist¸ú×ÙÊ××Öĸ´óдµÄµ¥´Ê£¬Ï±ê¾ÍÓõ¥´Ê±¾Éí£¬ÔªËØÖµÎª¸Ãµ¥´Ê³öÏֵĴÎÊý¡£µÚ11ÐÐʹÓÃÁËÄÚǶº¯Êýkeys()¡£Õâ¸öº¯Êý·µ»Ø¹ØÁªÊý×éµÄϱêÁÐ±í£¬foreachÓï¾ä¾ÍÓôËÁбíÑ»·¡£
×¢£º¹ØÁªÊý×é×ÜÊÇËæ»ú´æÖüµÄ£¬Òò´Ëµ±ÄãÓÃkeys()·ÃÎÊÆäËùÓÐÔªËØÊ±£¬²»±£Ö¤ÔªËØÒÔÈκÎ˳Ðò³öÏÖ£¬ÌرðÖµµÃÒ»ÌáµÄÊÇ£¬ËüÃDz»»áÒÔ±»´´½¨µÄ˳Ðò³öÏÖ¡£
ÒªÏë¿ØÖÆ¹ØÁªÊý×éÔªËØ³öÏֵĴÎÐò£¬¿ÉÒÔÓÃsort()º¯Êý¶Ôkeys()·µ»ØÖµ½øÐÐÅÅÁУ¬È磺
foreach $capword (sort keys(%wordlist)) {
print ("$capword: $wordlist{$capword}n");
}
¡¡
Îå¡¢´´½¨¹ØÁªÊý×é
¿ÉÒÔÓõ¥¸ö¸³ÖµÓï¾ä´´½¨¹ØÁªÊý×飬È磺
%fruit = ("apples",17,"bananas",9,"oranges","none");
´ËÓï¾ä´´½¨µÄ¹ØÁªÊý×麬ÓÐÏÂÃæÈý¸öÔªËØ£º
ϱêΪapplesµÄÔªËØ£¬ÖµÎª17
ϱêΪbananasµÄÔªËØ£¬ÖµÎª9
ϱêΪorangesµÄÔªËØ£¬ÖµÎªnone
×¢£ºÓÃÁÐ±í¸ø¹ØÁªÊý×鸳ֵʱ£¬Perl5ÔÊÐíʹÓÃ"=>"»ò","À´·Ö¸ôϱêÓëÖµ£¬ÓÃ"=>"¿É¶ÁÐÔ¸üºÃЩ£¬ÉÏÃæÓï¾äµÈЧÓÚ£º
%fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");
Áù¡¢´ÓÊý×é±äÁ¿¸´ÖƵ½¹ØÁªÊý×é
ÓëÁбíÒ»Ñù£¬Ò²¿ÉÒÔͨ¹ýÊý×é±äÁ¿´´½¨¹ØÁªÊý×飬µ±È»£¬ÆäÔªËØÊýĿӦ¸ÃΪżÊý£¬È磺
@fruit = ("apples",17,"bananas",9,"oranges","none");
%fruit = @fruit;
·´Ö®£¬¿ÉÒ԰ѹØÁªÊý×鸳¸øÊý×é±äÁ¿£¬È磺
%fruit = ("grapes",11,"lemons",27);
@fruit = %fruit;
×¢Ò⣬´ËÓï¾äÖÐÔªËØ´ÎÐò䶨Ò壬ÄÇôÊý×é±äÁ¿@fruit¿ÉÄÜΪ("grapes",11,"lemons",27)»ò("lemons",27,"grapes",11)¡£
¹ØÁªÊý×é±äÁ¿Ö®¼ä¿ÉÒÔÖ±½Ó¸³Öµ£¬È磺%fruit2 = %fruit1; »¹¿ÉÒÔ°ÑÊý×é±äÁ¿Í¬Ê±¸³¸øÒ»Ð©¼òµ¥±äÁ¿ºÍÒ»¸ö¹ØÁªÊý×é±äÁ¿£¬È磺
($var1, $var2, %myarray) = @list;
´ËÓï¾ä°Ñ@listµÄµÚÒ»¸öÔªËØ¸³¸ø$var1£¬µÚ¶þ¸ö¸³¸ø$var2£¬ÆäÓàµÄ¸³¸ø%myarray¡£
×îºó£¬¹ØÁªÊý×é¿ÉÒÔͨ¹ý·µ»ØÖµÎªÁбíµÄÄÚǶº¯Êý»òÓû§¶¨ÒåµÄ×Ó³ÌÐòÀ´´´½¨£¬ÏÂÀýÖаÑsplit()º¯ÊýµÄ·µ»ØÖµ--Ò»¸öÁбí--¸³¸øÒ»¸ö¹ØÁªÊý×é±äÁ¿¡£
1: #!/usr/local/bin/perl
2:
3: $inputline = <STDIN>;
4: $inputline =~ s/^s+|s+n$//g;
5: %fruit = split(/s+/, $inputline);
6: print ("Number of bananas: $fruit{"bananas"}n");
ÔËÐнá¹ûÈçÏ£º
oranges 5 apples 7 bananas 11 cherries 6
Number of bananas: 11
¡¡
Æß¡¢ÔªËصÄÔöɾ
Ôö¼ÓÔªËØÒѾ½²¹ý£¬¿ÉÒÔͨ¹ý¸øÒ»¸öδ³öÏÖ¹ýµÄÔªËØ¸³ÖµÀ´Ïò¹ØÁªÊý×éÖÐÔö¼ÓÐÂÔªËØ£¬Èç$fruit{"lime"} = 1;´´½¨Ï±êΪlime¡¢ÖµÎª1µÄÐÂÔªËØ¡£
ɾ³ýÔªËØµÄ·½·¨ÊÇÓÃÄÚǶº¯Êýdelete£¬ÈçÓûɾ³ýÉÏÊöÔªËØ£¬Ôò£º
delete ($fruit{"lime"});
×¢Ò⣺
1¡¢Ò»¶¨ÒªÊ¹ÓÃdeleteº¯ÊýÀ´É¾³ý¹ØÁªÊý×éµÄÔªËØ£¬ÕâÊÇΨһµÄ·½·¨¡£
2¡¢Ò»¶¨²»Òª¶Ô¹ØÁªÊý×éʹÓÃÄÚǶº¯Êýpush¡¢pop¡¢shift¼°splice£¬ÒòΪÆäÔªËØÎ»ÖÃÊÇËæ»úµÄ¡£
¡¡
°Ë¡¢ÁгöÊý×éµÄË÷ÒýºÍÖµ
ÉÏÃæÒѾÌáµ½£¬keys()º¯Êý·µ»Ø¹ØÁªÊý×éϱêµÄÁÐ±í£¬È磺
%fruit = ("apples", 9,
"bananas", 23,
"cherries", 11);
@fruitsubs = keys(%fruits);
ÕâÀ@fruitsubs±»¸³¸øapples¡¢bananas¡¢cherries¹¹³ÉµÄÁÐ±í£¬ÔÙ´ÎÌáÇë×¢Ò⣬´ËÁбíûÓдÎÐò£¬ÈôÏë°´×Öĸ˳ÐòÅÅÁУ¬¿ÉʹÓÃsort()º¯Êý¡£
@fruitindexes = sort keys(%fruits);
ÕâÑù½á¹ûΪ("apples","bananas","cherries")¡£ÀàËÆµÄ£¬ÄÚǶº¯Êývalues()·µ»Ø¹ØÁªÊý×éÖµµÄÁÐ±í£¬È磺
%fruit = ("apples", 9,
"bananas", 23,
"cherries", 11);
@fruitvalues = values(%fruits);
ÕâÀ@fruitvalues¿ÉÄܵĽá¹ûΪ(9,23.11)£¬´ÎÐò¿ÉÄܲ»Í¬¡£
¾Å¡¢ÓùØÁªÊý×éÑ»·
Ç°ÃæÒѾ³öÏÖ¹ýÀûÓÃkeys()º¯ÊýµÄforeachÑ»·Óï¾ä£¬ÕâÖÖÑ»·Ð§ÂʱȽϵͣ¬ÒòΪÿ·µ»ØÒ»¸öϱ꣬»¹µÃÔÙȥѰÕÒÆäÖµ£¬È磺
foreach $holder (keys(%records)){
$record = $records{$holder};
}
PerlÌṩһÖÖ¸üÓÐЧµÄÑ»··½Ê½£¬Ê¹ÓÃÄÚǶº¯Êýeach()£¬È磺
%records = ("Maris", 61, "Aaron", 755, "Young", 511);
while (($holder, $record) = each(%records)) {
# stuff goes here
}
each()º¯Êýÿ´Î·µ»ØÒ»¸öË«ÔªËØµÄÁÐ±í£¬ÆäµÚÒ»¸öÔªËØÎªÏ±꣬µÚ¶þ¸öÔªËØÎªÏàÓ¦µÄÖµ£¬×îºó·µ»ØÒ»¸ö¿ÕÁÐ±í¡£
×¢Ò⣺ǧÍò²»ÒªÔÚeach()Ñ»·ÖÐÌí¼Ó»òɾ³ýÔªËØ£¬·ñÔò»á²úÉú²»¿ÉÔ¤Áϵĺó¹û¡£
Ê®¡¢ÓùØÁªÊý×é´´½¨Êý¾Ý½á¹¹
ÓùØÁªÊý×é¿ÉÒÔÄ£ÄâÔÚÆäËü¸ß¼¶ÓïÑÔÖг£¼ûµÄ¶àÖÖÊý¾Ý½á¹¹£¬±¾½Ú½²ÊöÈçºÎÓÃ֮ʵÏÖ£ºÁ´±í¡¢½á¹¹ºÍÊ÷¡£
1¡¢(µ¥)Á´±í
Á´±íÊÇÒ»ÖֱȽϼòµ¥µÄÊý¾Ý½á¹¹£¬¿ÉÒÔ°´Ò»¶¨µÄ´ÎÐò´æÖüÖµ¡£Ã¿¸öÔªËØº¬ÓÐÁ½¸öÓò£¬Ò»¸öÊÇÖµ£¬Ò»¸öÊÇÒýÓ㨻ò³ÆÖ¸Õ룩£¬Ö¸ÏòÁ´±íÖÐÏÂÒ»¸öÔªËØ¡£Ò»¸öÌØÊâµÄÍ·Ö¸ÕëÖ¸ÏòÁ´±íµÄµÚÒ»¸öÔªËØ¡£
ÔÚPerlÖУ¬Á´±íºÜÈÝÒ×ÓùØÁªÊý×éʵÏÖ£¬ÒòΪһ¸öÔªËØµÄÖµ¿ÉÒÔ×÷ΪÏÂÒ»¸öÔªËØµÄË÷Òý¡£ÏÂÀýΪ°´×Öĸ˳ÐòÅÅÁеĵ¥´ÊÁ´±í£º
%words = ("abel", "baker",
"baker", "charlie",
"charlie", "delta",
"delta", "");
$header = "abel";
ÉÏÀýÖУ¬¼òµ¥±äÁ¿$headerº¬ÓÐÁ´±íÖеÚÒ»¸öµ¥´Ê£¬ËüͬʱҲÊǹØÁªÊý×éµÚÒ»¸öÔªËØµÄϱ꣬ÆäÖµbakerÓÖÊÇÏÂÒ»¸öÔªËØµÄϱ꣬ÒÀ´ËÀàÍÆ¡£
ϱêΪdeltaµÄ×îºóÒ»¸öÔªËØµÄֵΪ¿Õ´®£¬±íʾÁ´±íµÄ½áÊø¡£
ÔÚ½«Òª´¦ÀíµÄÊý¾Ý¸öÊýδ֪»òÆäËæ³ÌÐòÔËÐжøÔö³¤µÄÇé¿öÏ£¬Á´±íÊ®·ÖÓÐÓá£ÏÂÀýÓÃÁ´±í°´×Öĸ´ÎÐòÊä³öÒ»¸öÎļþÖеĵ¥´Ê¡£
1 : #!/usr/local/bin/perl
2 :
3 : # initialize list to empty
4 : $header = "";
5 : while ($line = <STDIN>) {
6 : # remove leading and trailing spaces
7 : $line =~ s/^s+|s+$//g;
8 : @words = split(/s+/, $line);
9 : foreach $word (@words) {
10: # remove closing punctuation, if any
11: $word =~ s/[.,;:-]$//;
12: # convert all words to lower case
13: $word =~ tr/A-Z/a-z/;
14: &add_word_to_list($word);
15: }
16: }
17: &print_list;
18:
19: sub add_word_to_list {
20: local($word) = @_;
21: local($pointer);
22:
23: # if list is empty, add first item
24: if ($header eq "") {
25: $header = $word;
26: $wordlist{$word} = "";
27: return;
28: }
29: # if word identical to first element in list,
30: # do nothing
31: return if ($header eq $word);
32: # see whether word should be the new
33: # first word in the list
34: if ($header gt $word) {
35: $wordlist{$word} = $header;
36: $header = $word;
37: return;
38: }
39: # find place where word belongs
40: $pointer = $header;
41: while ($wordlist{$pointer} ne "" &&
42: $wordlist{$pointer} lt $word) {
43: $pointer = $wordlist{$pointer};
44: }
45: # if word already seen, do nothing
46: return if ($word eq $wordlist{$pointer});
47: $wordlist{$word} = $wordlist{$pointer};
48: $wordlist{$pointer} = $word;
49: }
50:
51: sub print_list {
52: local ($pointer);
53: print ("Words in this file:n");
54: $pointer = $header;
55: while ($pointer ne "") {
56: print ("$pointern");
57: $pointer = $wordlist{$pointer};
58: }
59: }
ÔËÐнá¹ûÈçÏ£º
Here are some words.
Here are more words.
Here are still more words.
^D
Words in this file:
are
here
more
some
still
words
´Ë³ÌÐò·ÖΪÈý¸ö²¿·Ö£º
Ö÷³ÌÐò£º¶ÁÈ¡ÊäÈ벢ת»»µ½ÏàÓ¦µÄ¸ñʽ¡£
×Ó³ÌÐò£ºadd_word_to_list£¬½¨Á¢ÅÅÐòµ¥´ÊÁ´±í¡£
×Ó³ÌÐò£ºprint_list£¬Êä³öµ¥´ÊÁ´±í
µÚ3~17ÐÐΪÖ÷³ÌÐò£¬µÚ4Ðгõʼ»¯Á´±í£¬½«±íÍ·±äÁ¿$headerÉèΪ¿Õ´®£¬µÚ5ÐÐÆðµÄÑ»·Ã¿´Î¶ÁȡһÐÐÊäÈ룬µÚ7ÐÐÈ¥µôÍ·¡¢Î²µÄ¿Õ¸ñ£¬µÚ8Ðн«¾ä×Ó·Ö¸î³Éµ¥´Ê¡£9~15ÐеÄÄÚÑ»·Ã¿´Î´¦ÀíÒ»¸öµ¥´Ê£¬Èç¹û¸Ãµ¥´ÊµÄ×îºóÒ»¸ö×Ö·ûÊDZêµã·ûºÅ£¬¾ÍÈ¥µô¡£µÚ13Ðаѵ¥´Êת»»³ÉȫСдÐÎʽ£¬µÚ14Ðд«µÝ¸ø×Ó³ÌÐòadd_word_to_list¡£
×Ó³ÌÐòadd_word_to_listÏÈÔÚµÚ24Ðд¦¼ì²éÁ´±íÊÇ·ñΪ¿Õ¡£Èç¹ûÊÇ£¬µÚ25Ðн«µ¥´Ê¸³¸ø$header£¬26Ðд´½¨Á´±íµÚÒ»¸öÔªËØ£¬´æÖüÔÚ¹ØÁªÊý×é%wordlistÖС£Èç¹ûÁ´±í·Ç¿Õ£¬37Ðмì²éµÚÒ»¸öÔªËØÊÇ·ñÓë¸Ãµ¥´ÊÏàͬ£¬Èç¹ûÏàͬ£¬¾ÍÁ¢¿Ì·µ»Ø¡£ÏÂÒ»²½¼ì²éÕâһе¥´ÊÊÇ·ñÓ¦¸ÃΪÁ´±íµÚÒ»¸öÔªËØ£¬¼´Æä°´×Öĸ˳ÐòÏÈÓÚ$header¡£Èç¹ûÊÇÕâÑù£¬Ôò£º
1¡¢´´½¨Ò»¸öÐÂÔªËØ£¬Ï±êΪ¸Ãе¥´Ê£¬ÆäֵΪԵÚÒ»¸öµ¥´Ê¡£
2¡¢¸Ãе¥´Ê¸³¸ø$header¡£
Èç¹û¸Ãе¥´Ê²»¸ÃΪµÚÒ»¸öÔªËØ£¬Ôò40~44ÐÐÀûÓþÖÓò±äÁ¿$pointerѰÕÒÆäºÏÊʵÄÓÐЧλÖã¬41~44ÐÐÑ»·µ½$wordlist{$pointer}´óÓÚ»òµÈÓÚ$wordΪֹ¡£½ÓÏÂÀ´46Ðв鿴¸Ãµ¥´ÊÊÇ·ñÒÑÔÚÁ´±íÖУ¬Èç¹ûÔھͷµ»Ø£¬·ñÔò47~48Ðн«ÆäÌí¼Óµ½Á´±íÖС£Ê×ÏÈ47Ðд´½¨ÐÂÔªËØ$wordlist{$word}£¬ÆäֵΪ$wordlist{$pointer}£¬Õâʱ$wordlist{$word}ºÍ$wordlist{$pointer}Ö¸Ïòͬһ¸öµ¥´Ê¡£È»ºó£¬48Ðн«$wordlist{$pointer}µÄÖµ¸³Îª$word£¬¼´½«$wordlist{$pointer}Ö¸Ïò¸Õ´´½¨µÄÐÂÔªËØ$wordlist{$word}¡£
×îºóµ±´¦ÀíÍê±Ïºó£¬×Ó³ÌÐòprint_list()ÒÀ´ÎÊä³öÁ´±í£¬¾ÖÓò±äÁ¿$pointerº¬ÓÐÕýÔÚÊä³öµÄÖµ£¬$wordlist{$pointer}ΪÏÂÒ»¸öÒªÊä³öµÄÖµ¡£
×¢£ºÒ»°ã²»ÐèÒªÓÃÁ´±íÀ´×öÕâЩ¹¤×÷£¬ÓÃsort()ºÍkeys()ÔÚ¹ØÁªÊý×éÖÐÑ»·¾Í×ã¹»ÁË£¬È磺
foreach $word (sort keys(%wordlist)) {
# print the sorted list, or whatever }
µ«ÊÇ£¬ÕâÀïÉæ¼°µÄÖ¸ÕëµÄ¸ÅÄîÔÚÆäËüÊý¾Ý½á¹¹ÖкÜÓÐÒâÒå¡£
2¡¢½á¹¹
Ðí¶à±à³ÌÓïÑÔ¿ÉÒÔ¶¨Òå½á¹¹(structure)£¬¼´Ò»×éÊý¾ÝµÄ¼¯ºÏ¡£½á¹¹ÖеÄÿ¸öÔªËØÓÐÆä×Ô¼ºµÄÃû×Ö£¬²¢Í¨¹ý¸ÃÃû×ÖÀ´·ÃÎÊ¡£
Perl²»Ö±½ÓÌṩ½á¹¹ÕâÖÖÊý¾Ý½á¹¹£¬µ«¿ÉÒÔÓùØÁªÊý×éÀ´Ä£Äâ¡£ÀýÈçÄ£ÄâCÓïÑÔÖÐÈçϵĽṹ£º
struce{
int field1;
int field2;
int field3; }mystructvar;
ÎÒÃÇÒª×öµÄÊǶ¨ÒåÒ»¸öº¬ÓÐÈý¸öÔªËØµÄ¹ØÁªÊý×飬ϱê·Ö±ðΪfield1¡¢field2¡¢field3£¬È磺
%mystructvar = ("field1" , "" ,
"field2" , "" ,
"field3" , "" ,);
ÏñÉÏÃæCÓïÑԵ͍ÒåÒ»Ñù£¬Õâ¸ö¹ØÁªÊý×é%mystrctvarÓÐÈý¸öÔªËØ£¬Ï±ê·Ö±ðΪfield1¡¢field2¡¢field3£¬¸÷ÔªËØ³õʼֵ¾ùΪ¿Õ´®¡£¶Ô¸÷ÔªËØµÄ·ÃÎʺ͸³ÖµÍ¨¹ýÖ¸¶¨Ï±êÀ´½øÐУ¬È磺
$mystructvar{"field1"} = 17;
3¡¢Ê÷
ÁíÒ»¸ö¾³£Ê¹ÓõÄÊý¾Ý½á¹¹ÊÇÊ÷¡£Ê÷ÓëÁ´±íÀàËÆ£¬µ«Ã¿¸ö½ÚµãÖ¸ÏòµÄÔªËØ¶àÓÚÒ»¸ö¡£×î¼òµ¥µÄÊ÷ÊǶþ²æÊ÷£¬Ã¿¸ö½ÚµãÖ¸ÏòÁíÍâÁ½¸öÔªËØ£¬³ÆÎª×ó×Ó½ÚµãºÍÓÒ×ӽڵ㣨»ò³Æº¢×Ó£©£¬Ã¿¸ö×Ó½ÚµãÓÖÖ¸ÏòÁ½¸öËï×ӽڵ㣬ÒÀ´ËÀàÍÆ¡£
×¢£º´Ë´¦Ëù˵µÄÊ÷ÏñÉÏÊöÁ´±íÒ»ÑùÊǵ¥ÏòµÄ£¬Ã¿¸ö½ÚµãÖ¸ÏòÆä×ӽڵ㣬µ«×ӽڵ㲢²»Ö¸Ïò¸¸½Úµã¡£
Ê÷µÄ¸ÅÄî¿ÉÒÔÈçÏÂÃèÊö£º
ÒòΪÿ¸ö×Ó½Úµã¾ùΪһ¸öÊ÷£¬ËùÒÔ×ó/ÓÒ×Ó½ÚµãÒ²³ÆÎª×ó/ÓÒ×ÓÊ÷¡££¨ÓÐʱ³Æ×ó/ÓÒ·ÖÖ§£©
µÚÒ»¸ö½Úµã£¨²»ÊÇÈκνڵãµÄ×Ó½ÚµãµÄ½Úµã£©³ÆÎªÊ÷µÄ¸ù¡£
ûÓк¢×Ó£¨×ӽڵ㣩µÄ½Úµã³ÆÎªÒ¶½Úµã¡£
ÓжàÖÖʹÓùØÁªÊý×éʵÏÖÊ÷½á¹¹µÄ·½·¨£¬×îºÃµÄÒ»ÖÖÓ¦¸ÃÊÇ£º¸ø×Ó½Úµã·Ö±ð¼ÓÉÏleftºÍrightÒÔ·ÃÎÊÖ®¡£ÀýÈ磬alphaleftºÍalpharightÖ¸ÏòalphaµÄ×óÓÒ×ӽڵ㡣ÏÂÃæÊÇÓô˷½·¨´´½¨¶þ²æÊ÷²¢±éÀúµÄÀý³Ì£º
1 : #!/usr/local/bin/perl
2 :
3 : $rootname = "parent";
4 : %tree = ("parentleft", "child1",
5 : "parentright", "child2",
6 : "child1left", "grandchild1",
7 : "child1right", "grandchild2",
8 : "child2left", "grandchild3",
9 : "child2right", "grandchild4");
10: # traverse tree, printing its elements
11: &print_tree($rootname);
12:
13: sub print_tree {
14: local ($nodename) = @_;
15: local ($leftchildname, $rightchildname);
16:
17: $leftchildname = $nodename . "left";
18: $rightchildname = $nodename . "right";
19: if ($tree{$leftchildname} ne "") {
20: &print_tree($tree{$leftchildname});
21: }
22: print ("$nodenamen");
23: if ($tree{$rightchildname} ne "") {
24: &print_tree($tree{$rightchildname});
25: }
26: }
½á¹ûÊä³öÈçÏ£º
grandchild1
child1
grandchild2
parent
grandchild3
child2
grandchild4
¡¡
µÚÆß½Ú£º
Ò»¡¢ÒýÓüò½é
¶þ¡¢Ê¹ÓÃÒýÓÃ
Èý¡¢Ê¹Ó÷´Ð±Ïß()²Ù×÷·û
ËÄ¡¢ÒýÓúÍÊý×é
Îå¡¢¶àάÊý×é
Áù¡¢×Ó³ÌÐòµÄÒýÓÃ
×Ó³ÌÐòÄ£°å
Æß¡¢Êý×éÓë×Ó³ÌÐò
°Ë¡¢Îļþ¾ä±úµÄÒýÓÃ
Ò»¡¢ÒýÓüò½é
ÒýÓþÍÊÇÖ¸Õ룬¿ÉÒÔÖ¸Ïò±äÁ¿¡¢Êý×é¡¢¹þÏ£±í£¨Ò²½Ð¹ØÁªÊý×飩ÉõÖÁ×Ó³ÌÐò¡£Pascal»òC³ÌÐòÔ±Ó¦¸Ã¶ÔÒýÓ㨼´Ö¸Õ룩µÄ¸ÅÄîºÜÊìϤ£¬ÒýÓþÍÊÇijֵµÄµØÖ·£¬¶ÔÆäµÄʹÓÃÔòÈ¡¾öÓÚ³ÌÐòÔ±ºÍÓïÑԵĹ涨¡£ÔÚPerlÖУ¬¿ÉÒÔ°ÑÒýÓóÆÎªÖ¸Õ룬¶þÕßÊÇͨÓõģ¬ÎÞ²î±ðµÄ¡£ÒýÓÃÔÚ´´½¨¸´ÔÓÊý¾Ý·½ÃæÊ®·ÖÓÐÓá£
Perl5ÖеÄÁ½ÖÖÒýÓÃÀàÐÍΪӲÒýÓúͷûºÅÒýÓ᣷ûºÅÒýÓú¬ÓбäÁ¿µÄÃû×Ö£¬Ëü¶ÔÔËÐÐʱ´´½¨±äÁ¿Ãû²¢¶¨Î»ºÜÓÐÓ㬻ù±¾ÉÏ£¬·ûºÅÒýÓþÍÏóÎļþÃû»òUNIXϵͳÖеÄÈíÁ´½Ó¡£¶øÓ²ÒýÓÃÔòÏóÎļþϵͳÖеÄÓ²Á´½Ó¡£
Perl4Ö»ÔÊÐí·ûºÅÒýÓ㬸øÊ¹ÓÃÔì³ÉһЩÀ§ÄÑ¡£ÀýÈ磬ֻÔÊÐíͨ¹ýÃû×Ö¶Ô°üµÄ·ûºÅÃû¹þÏ£±í£¨ÃûΪ_main{}£©½¨Á¢Ë÷Òý¡£Perl5ÔòÔÊÐíÊý¾ÝµÄÓ²ÒýÓ㬷½±ã¶àÁË¡£
Ó²ÒýÓøú×ÙÒýÓõļÆÊý£¬µ±ÆäÊýΪÁãʱ£¬Perl×Ô¶¯½«±»ÒýÓõÄÏîÄ¿ÊÍ·Å£¬Èç¹û¸ÃÏîÄ¿ÊǶÔÏó£¬ÔòÎö¹¹Êͷŵ½ÄÚ´æ³ØÖС£Perl±¾Éí¾ÍÊǸöÃæÏò¶ÔÏóµÄÓïÑÔ£¬ÒòΪPerlÖеÄÈκζ«Î÷¶¼ÊǶÔÏ󣬰üºÍÄ£¿éʹµÃ¶ÔÏó¸üÒ×ÓÚʹÓá£
¼òµ¥±äÁ¿µÄÓ²ÒýÓúܼòµ¥£¬¶ÔÓڷǼòµ¥±äÁ¿µÄÒýÓã¬Äã±ØÐëÏÔʽµØ½â³ýÒýÓò¢¸æË߯äÓ¦ÈçºÎ×ö£¬Ïê¼û¡¶µÚ ÕÂPerlÖеÄÃæÏò¶ÔÏó±à³Ì¡·¡£
¶þ¡¢Ê¹ÓÃÒýÓÃ
±¾ÕÂÖУ¬¼òµ¥±äÁ¿Ö¸Ïñ$pointerÕâÑùµÄ±äÁ¿£¬$pointer½öº¬Ò»¸öÊý¾ÝÏÆä¿ÉÒÔΪÊý×Ö¡¢×Ö·û´®»òµØÖ·¡£
Èκμòµ¥±äÁ¿¾ù¿É±£´æÓ²ÒýÓá£ÒòΪÊý×éºÍ¹þÏ£±íº¬Óжà¸ö¼òµ¥±äÁ¿£¬ËùÒÔ¿ÉÒÔ½¨Á¢¶àÖÖ×éºÏ¶ø³ÉµÄ¸´ÔÓµÄÊý¾Ý½á¹¹£¬ÈçÊý×éµÄÊý×é¡¢¹þÏ£±íµÄÊý×é¡¢×Ó³ÌÐòµÄ¹þÏ£±íµÈµÈ¡£Ö»ÒªÄãÀí½âÆäʵֻÊÇÔÚÓüòµ¥±äÁ¿ÔÚ¹¤×÷£¬¾ÍÓ¦¸Ã¿ÉÒÔÕýÈ·µÄÔÚ×ÔӵĽṹÖÐÕýÈ·µØ½â³ýÒýÓá£
Ê×ÏÈÀ´¿´Ò»Ð©»ù±¾Òªµã¡£
Èç¹û$pointerµÄֵΪһ¸öÊý×éµÄÖ¸Õ룬Ôòͨ¹ýÐÎʽ@$pointerÀ´·ÃÎÊÊý×éÖеÄÔªËØ¡£ÐÎʽ@$pointerµÄÒâÒåΪ¡°È¡³ö$pointerÖеĵØÖ·Öµµ±×÷Êý×éʹÓᱡ£ÀàËÆµÄ£¬%$pointerΪָÏò¹þÏ£±íÖеÚÒ»¸öÔªËØµÄÒýÓá£
ÓжàÖÖ¹¹½¨ÒýÓõķ½·¨£¬¼¸ºõ¿ÉÒÔ¶ÔÈκÎÊý¾Ý½¨Á¢ÒýÓã¬ÈçÊý×é¡¢¼òµ¥±äÁ¿¡¢×Ó³ÌÐò¡¢Îļþ¾ä±ú£¬ÒÔ¼°--C³ÌÐòÔ±»á¸ÐÐËȤµÄ--ÒýÓá£PerlʹÄãÓÐÄÜÁ¦Ð´³ö°Ñ×Ô¼º¶¼¸ãºýÍ¿µÄ¼«Æä¸´ÔӵĴúÂë¡£:)
ÏÂÃæ¿´¿´PerlÖд´½¨ºÍʹÓÃÒýÓõķ½·¨¡£
Èý¡¢Ê¹Ó÷´Ð±Ïß()²Ù×÷·û
·´Ð±Ïß²Ù×÷·ûÓëCÓïÑÔÖд«µÝµØÖ·µÄ²Ù×÷·û&¹¦ÄÜÀàËÆ¡£Ò»°ãÊÇÓô´½¨±äÁ¿ÓÖÒ»¸öеÄÒýÓá£ÏÂÃæÎª´´½¨¼òµ¥±äÁ¿µÄÒýÓõÄÀý×Ó£º
$variavle = 22;
$pointer = $variable;
$ice = "jello";
$iceprt = $ice;
ÒýÓÃ$pointerÖ¸Ïò´æÓÐ$variableÖµµÄλÖã¬ÒýÓÃ$iceptrÖ¸Ïò"jello"¡£¼´Ê¹×î³õµÄÒýÓÃ$variableÏú»ÙÁË£¬ÈÔÈ»¿ÉÒÔͨ¹ý$pointer·ÃÎʸÃÖµ£¬ÕâÊÇÒ»¸öÓ²ÒýÓã¬ËùÒÔ±ØÐëͬʱÏú»Ù$pointerºÍ$variableÒÔ±ã¸Ã¿Õ¼äÊͷŵ½ÄÚ´æ³ØÖС£
ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÒýÓñäÁ¿$pointer´æµÄÊÇ$variableµÄµØÖ·£¬¶ø²»ÊÇÖµ±¾Éí£¬Òª»ñµÃÖµ£¬ÐÎʽΪÁ½¸ö$·ûºÅ£¬ÈçÏ£º
#!/usr/bin/perl
$value = 10;
$pointer = $value;
printf "n Pointer Address $pointer of $value n";
printf "n What Pointer *($pointer) points to $$pointern";
½á¹ûÊä³öÈçÏ£º
Pointer Address SCALAR(0x806c520) of 10
What Pointer *(SCALAR(0x806c520)) points to 10
ÿ´ÎÔËÐУ¬Êä³ö½á¹ûÖеĵØÖ·»áÓÐËù¸Ä±ä£¬µ«¿ÉÒÔ¿´µ½$pointer¸ø³öµØÖ·£¬¶ø$$pointer¸ø³ö$variableµÄÖµ¡£
¿´Ò»ÏµØÖ·µÄÏÔʾ£¬SCALARºóÃæÒ»´®Ê®Áù½øÖÆ£¬SCALAR˵Ã÷¸ÃµØÖ·Ö¸Ïò¼òµ¥±äÁ¿£¨¼´±êÁ¿£©£¬ºóÃæµÄÊý×ÖÊÇʵ¼Ê´æÖüÖµµÄµØÖ·¡£
×¢Ò⣺ָÕë¾ÍÊǵØÖ·£¬Í¨¹ýÖ¸Õë¿ÉÒÔ·ÃÎʸõØÖ·´¦´æÖüµÄÊý¾Ý¡£Èç¹ûÖ¸ÕëÖ¸ÏòÁËÎÞЧµÄµØÖ·£¬¾Í»áµÃµ½²»ÕýÈ·µÄÊý¾Ý¡£Í¨³£Çé¿öÏ£¬Perl»á·µ»ØNULLÖµ£¬µ«²»¸ÃÒÀÀµÓÚ´Ë£¬Ò»¶¨ÒªÔÚ³ÌÐòÖаÑËùÓеÄÖ¸ÕëÕýÈ·µØ³õʼ»¯£¬Ö¸ÏòÓÐЧµÄÊý¾ÝÏî¡£ ËÄ¡¢ÒýÓúÍÊý×é
¹ØÓÚPerlÓïÑÔÓ¦¸Ã¼ÇסµÄ×îÖØÒªµÄÒ»µã¿ÉÄÜÊÇ£ºPerlÖеÄÊý×éºÍ¹þÏ£±íʼÖÕÊÇһάµÄ¡£Òò´Ë£¬Êý×éºÍ¹þÏ£±íÖ»±£´æ±êÁ¿Öµ£¬²»Ö±½Ó´æÖüÊý×é»òÆäËüµÄ¸´ÔÓÊý¾Ý½á¹¹¡£Êý×éµÄ³ÉԱҪôÊÇÊý£¨»ò×Ö·û´®£©ÒªÃ´ÊÇÒýÓá£
¶ÔÊý×éºÍ¹þÏ£±í¿ÉÒÔÏó¶Ô¼òµ¥±äÁ¿Ò»ÑùʹÓ÷´Ð±Ïß²Ù×÷·û£¬Êý×éµÄÒýÓÃÈçÏ£º
1 #!/usr/bin/perl
2 #
3 # Using Array references
4 #
5 $pointer = @ARGV;
6 printf "n Pointer Address of ARGV = $pointern";
7 $i = scalar(@$pointer);
8 printf "n Number of arguments : $i n";
9 $i = 0;
10 foreach (@$pointer) {
11 printf "$i : $$pointer[$i++]; n";
12 }
ÔËÐнá¹ûÈçÏ£º
$ test 1 2 3 4
Pointer Address of ARGV = ARRAY(0x806c378)
Number of arguments : 4
0 : 1;
1 : 2;
2 : 3;
3 : 4;
µÚ5Ðн«ÒýÓÃ$pointerÖ¸ÏòÊý×é@ARGV£¬µÚ6ÐÐÊä³öARGVµÄµØÖ·¡£$pointer·µ»ØÊý×éµÚÒ»¸öÔªËØµÄµØÖ·£¬ÕâÓëCÓïÑÔÖеÄÊý×éÖ¸ÕëÊÇÀàËÆµÄ¡£µÚ7Ðе÷Óú¯Êýscalar()»ñµÃÊý×éµÄÔªËØ¸öÊý£¬¸Ã²ÎÊýÒà¿ÉΪ@ARGV£¬µ«ÓÃÖ¸ÕëÔò±ØÐëÓÃ@$pointerµÄÐÎʽָ¶¨ÆäÀàÐÍΪÊý×飬$pointer¸ø³öµØÖ·£¬@·ûºÅ˵Ã÷´«µÝµÄµØÖ·ÎªÊý×éµÄµÚÒ»¸öÔªËØµÄµØÖ·¡£µÚ10ÐÐÓëµÚ7ÐÐÀàËÆ£¬µÚ11ÐÐÓÃÐÎʽ$$pointer[$i]ÁгöËùÓÐÔªËØ¡£
¶Ô¹ØÁªÊý×éʹÓ÷´Ð±Ïß²Ù×÷·ûµÄ·½·¨ÊÇÒ»ÑùµÄ--°ÑËùÓйØÁªÊý×éÃû»»³ÉÒýÓÃ$poniter¡£×¢ÒâÊý×éºÍ¼òµ¥±äÁ¿£¨±êÁ¿£©µÄÒýÓÃÏÔʾʱ¾ù´øÓÐÀàÐÍ--ARRAYºÍSCALAR£¬¹þÏ£±í£¨¹ØÁªÊý×飩ºÍº¯ÊýÒ²Ò»Ñù£¬·Ö±ðΪHASHºÍCODE¡£ÏÂÃæÊǹþÏ£±íµÄÒýÓõÄÀý×Ó¡£
#!/usr/bin/perl
1 #
2 # Using Associative Array references
3 #
4 %month = (
5 '01', 'Jan',
6 '02', 'Feb',
7 '03', 'Mar',
8 '04', 'Apr',
9 '05', 'May',
10 '06', 'Jun',
11 '07', 'Jul',
12 '08', 'Aug',
13 '09', 'Sep',
14 '10', 'Oct',
15 '11', 'Nov',
16 '12', 'Dec',
17 );
18
19 $pointer = %month;
20
21 printf "n Address of hash = $pointern ";
22
23 #
24 # The following lines would be used to print out the
25 # contents of the associative array if %month was used.
26 #
27 # foreach $i (sort keys %month) {
28 # printf "n $i $$pointer{$i} ";
29 # }
30
31 #
32 # The reference to the associative array via $pointer
33 #
34 foreach $i (sort keys %$pointer) {
35 printf "$i is $$pointer{$i} n";
36 }
½á¹ûÊä³öÈçÏ£º
$ mth
Address of hash = HASH(0x806c52c)
01 is Jan
02 is Feb
03 is Mar
04 is Apr
05 is May
06 is Jun
07 is Jul
08 is Aug
09 is Sep
10 is Oct
11 is Nov
12 is Dec
ÓëÊý×éÀàËÆ£¬Í¨¹ýÒýÓ÷ÃÎʹþÏ£±íµÄÔªËØÐÎʽΪ$$pointer{$index}£¬µ±È»£¬$indexÊǹþÏ£±íµÄ¼üÖµ£¬¶ø²»½öÊÇÊý×Ö¡£»¹Óм¸ÖÖ·ÃÎÊÐÎʽ£¬´ËÍ⣬¹¹½¨¹þÏ£±í»¹¿ÉÒÔÓÃ=>²Ù×÷·û£¬¿É¶ÁÐÔ¸üºÃЩ¡£ÏÂÃæÔÙ¿´Ò»¸öÀý×Ó£º
1 #!/usr/bin/perl
2 #
3 # Using Array references
4 #
5 %weekday = (
6 '01' => 'Mon',
7 '02' => 'Tue',
8 '03' => 'Wed',
9 '04' => 'Thu',
10 '05' => 'Fri',
11 '06' => 'Sat',
12 '07' => 'Sun',
13 );
14 $pointer = %weekday;
15 $i = '05';
16 printf "n ================== start test ================= n";
17 #
18 # These next two lines should show an output
19 #
20 printf '$$pointer{$i} is ';
21 printf "$$pointer{$i} n";
22 printf '${$pointer}{$i} is ';
23 printf "${$pointer}{$i} n";
24 printf '$pointer->{$i} is ';
25
26 printf "$pointer->{$i}n";
27 #
28 # These next two lines should not show anything 29 #
30 printf '${$pointer{$i}} is ';
31 printf "${$pointer{$i}} n";
32 printf '${$pointer->{$i}} is ';
33 printf "${$pointer->{$i}}";
34 printf "n ================== end of test ================= n";
35
½á¹ûÊä³öÈçÏ£º
================== start test =================
$$pointer{$i} is Fri
${$pointer}{$i} is Fri
$pointer->{$i} is Fri
${$pointer{$i}} is
${$pointer->{$i}} is
================== end of test =================
¿ÉÒÔ¿´µ½£¬Ç°ÈýÖÖÐÎʽµÄÊä³öÏÔʾÁËÔ¤ÆÚµÄ½á¹û£¬¶øºóÁ½ÖÖÔòûÓС£µ±Äã²»Çå³þÊÇ·ñÕýȷʱ£¬¾ÍÊä³ö½á¹û¿´¿´¡£ÔÚPerlÖУ¬Óв»Ã÷È·µÄ´úÂë¾ÍÓÃprintÓï¾äÊä³öÀ´ÊµÑéһϣ¬ÕâÄÜʹÄãÇå³þPerlÊÇÔõÑù½âÊÍÄãµÄ´úÂëµÄ¡£
Îå¡¢¶àάÊý×é
Óï¾ä@array = list;¿ÉÒÔ´´½¨Êý×éµÄÒýÓã¬ÖÐÀ¨ºÅ¿ÉÒÔ´´½¨ÄäÃûÊý×éµÄÒýÓá£ÏÂÃæÓï¾äΪÓÃÓڻͼµÄÈýάÊý×éµÄÀý×Ó£º
$line = ['solid' , 'black' , ['1','2','3'] , ['4','5','6']];
´ËÓï¾ä½¨Á¢ÁËÒ»¸öº¬ËĸöÔªËØµÄÈýάÊý×飬±äÁ¿$lineÖ¸Ïò¸ÃÊý×顣ǰÁ½¸öÔªËØÊDZêÁ¿£¬´æÖüÏßÌõµÄÀàÐͺÍÑÕÉ«£¬ºóÁ½¸öÔªËØÊÇÄäÃûÊý×éµÄÒýÓ㬴æÖüÏßÌõµÄÆðµãºÍÖյ㡣·ÃÎÊÆäÔªËØÓï·¨ÈçÏ£º
$arrayReference->[$index] single-dimensional array
$arrayReference->[$index1][$index2] two-dimensional array
$arrayReference->[$index1][$index2][$index3] three-dimensional array
¿ÉÒÔ´´½¨ÔÚÄãµÄÖÇÁ¦¡¢Éè¼Æ¾ÑéºÍ¼ÆËã»úµÄÄÚ´æÔÊÐíµÄÇé¿öϼ«¾¡¸´ÔӵĽṹ£¬µ«×îºÃ¶Ô¿ÉÄܶÁµ½»ò¹ÜÀíÄãµÄ´úÂëµÄÈËÓѺÃһЩ--¾¡Á¿Ê¹´úÂë¼òµ¥Ð©¡£ÁíÒ»·½Ã棬Èç¹ûÄãÏëÏò±ðÈËìÅÒ«ÄãµÄ±à³ÌÄÜÁ¦£¬Perl¸øÄã×ã¹»µÄ»ú»áºÍÄÜÁ¦±àдÁ¬×Ô¼º¶¼ÄÑÃâºýÍ¿µÄ´úÂë¡£:)
½¨Ò飺µ±ÄãÏëʹÓöàÓÚÈýάµÄÊý×éʱ£¬×îºÃ¿¼ÂÇʹÓÃÆäËüÊý¾Ý½á¹¹À´¼ò»¯´úÂë¡£
ÏÂÃæÎª´´½¨ºÍʹÓöþάÊý×éµÄÀý×Ó£º
1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array references
4 #
5 $line = ['solid', 'black', ['1','2','3'] , ['4', '5', '6']];
6 print "$line->[0] = $line->[0] n";
7 print "$line->[1] = $line->[1] n";
8 print "$line->[2][0] = $line->[2][0] n";
9 print "$line->[2][1] = $line->[2][1] n";
10 print "$line->[2][2] = $line->[2][2] n";
11 print "$line->[3][0] = $line->[3][0] n";
12 print "$line->[3][1] = $line->[3][1] n";
13 print "$line->[3][2] = $line->[3][2] n";
14 print "n"; # The obligatory output beautifier.
½á¹ûÊä³öÈçÏ£º
$line->[0] = solid
$line->[1] = black
$line->[2][0] = 1
$line->[2][1] = 2
$line->[2][2] = 3
$line->[3][0] = 4
$line->[3][1] = 5
$line->[3][2] = 6
ÄÇôÈýάÊý×éÓÖÈçºÎÄØ£¿ÏÂÃæÊÇÉÏÀýÂÔΪ¸Ä¶¯µÄ°æ±¾¡£
1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array references again
4 #
5 $line = ['solid', 'black', ['1','2','3', ['4', '5', '6']]];
6 print "$line->[0] = $line->[0] n";
7 print "$line->[1] = $line->[1] n";
8 print "$line->[2][0] = $line->[2][0] n";
9 print "$line->[2][1] = $line->[2][1] n";
10 print "$line->[2][2] = $line->[2][2] n";
11 print "$line->[2][3][0] = $line->[2][3][0] n";
12 print "$line->[2][3][1] = $line->[2][3][1] n";
13 print "$line->[2][3][2] = $line->[2][3][2] n";
14 print "n";
½á¹ûÊä³öÈçÏ£º
$line->[0] = solid
$line->[1] = black
$line->[2][0] = 1
$line->[2][1] = 2
$line->[2][2] = 3
$line->[2][3][0] = 4
$line->[2][3][1] = 5
$line->[2][3][2] = 6
·ÃÎʵÚÈý²ãÔªËØµÄ·½Ê½ÐÎÈç$line->[2][3][0]£¬ÀàËÆÓÚCÓïÑÔÖеÄArray_pointer[2][3][0]¡£±¾ÀýÖУ¬Ï±ê¾ùΪÊý×Ö£¬µ±È»Òà¿ÉÓñäÁ¿´úÌæ¡£ÓÃÕâÖÖ·½·¨¿ÉÒÔ°ÑÊý×éºÍ¹þÏ£±í½áºÏÆðÀ´¹¹³É¸´ÔӵĽṹ£¬ÈçÏ£º
1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array and Hash references
4 #
5 %cube = (
6 '0', ['0', '0', '0'],
7 '1', ['0', '0', '1'],
8 '2', ['0', '1', '0'],
9 '3', ['0', '1', '1'],
10 '4', ['1', '0', '0'],
11 '5', ['1', '0', '1'],
12 '6', ['1', '1', '0'],
13 '7', ['1', '1', '1']
14 );
15 $pointer = %cube;
16 print "n Da Cube n";
17 foreach $i (sort keys %$pointer) {
18 $list = $$pointer{$i};
19 $x = $list->[0];
20 $y = $list->[1];
21 $z = $list->[2];
22 printf " Point $i = $x,$y,$z n";
23 }
½á¹ûÊä³öÈçÏ£º
Da Cube
Point 0 = 0,0,0
Point 1 = 0,0,1
Point 2 = 0,1,0
Point 3 = 0,1,1
Point 4 = 1,0,0
Point 5 = 1,0,1
Point 6 = 1,1,0
Point 7 = 1,1,1
ÕâÊÇÒ»¸ö¶¨ÒåÁ¢·½ÌåµÄÀý×Ó¡£%cubeÖб£´æµÄÊǵãºÅºÍ×ø±ê£¬×ø±êÊǸöº¬Èý¸öÊý×ÖµÄÊý×é¡£±äÁ¿$list»ñÈ¡×ø±êÊý×éµÄÒýÓãº$list = $$ pointer{$i}; È»ºó·ÃÎʸ÷×ø±êÖµ£º$x = $list->[0]; ... Ò²¿ÉÓÃÈçÏ·½·¨¸ø$x¡¢$yºÍ$z¸³Öµ£º($x,$y,$z) = @$list;
ʹÓùþÏ£±íºÍÊý×éʱ£¬ÓÃ$ºÍÓÃ->ÊÇÀàËÆµÄ£¬¶ÔÊý×é¶øÑÔÏÂÃæÁ½¸öÓï¾äµÈЧ£º
$$names[0] = "kamran";
$names->[0] = "kamran";
¶Ô¹þÏ£±í¶øÑÔÏÂÃæÁ½¸öÓï¾äµÈЧ£º
$$lastnames{"kamran"} = "Husain";
$lastnames->{"kamran"} = "Husain";
PerlÖеÄÊý×é¿ÉÒÔÔÚÔËÐÐÖд´½¨ºÍÀ©Õ¹¡£µ±Êý×éµÄÒýÓõÚÒ»´ÎÔÚµÈʽ×ó±ß³öÏÖʱ£¬¸ÃÊý×é×Ô¶¯±»´´½¨£¬¼òµ¥±äÁ¿ºÍ¶àάÊý×éÒ²ÊÇÒ»Ñù¡£ÈçϾ䣬Èç¹ûÊý×écontours²»´æÔÚ£¬Ôò±»´´½¨£º
$contours[$x][$y][$z] = &xlate($mouseX, $mouseY);
Áù¡¢×Ó³ÌÐòµÄÒýÓÃ
perlÖÐ×Ó³ÌÐòµÄÒýÓÃÓëCÖк¯ÊýµÄÖ¸ÕëÀàËÆ£¬¹¹Ôì·½·¨ÈçÏ£º
$pointer_to_sub = sub {... declaration of sub ...};
ͨ¹ýËù¹¹ÔìµÄÒýÓõ÷ÓÃ×Ó³ÌÐòµÄ·½·¨Îª£º
&$pointer_to_sub(parameters);
×Ó³ÌÐòÄ£°å
×Ó³ÌÐòµÄ·µ»ØÖµ²»½öÏÞÓÚÊý¾Ý£¬»¹¿ÉÒÔ·µ»Ø×Ó³ÌÐòµÄÒýÓ᣷µ»ØµÄ×Ó³ÌÐòÔÚµ÷Óô¦Ö´ÐУ¬µ«È´ÊÇÔÚ×î³õ±»´´½¨µÄµ÷Óô¦±»ÉèÖã¬ÕâÊÇÓÉPerl¶ÔClosure´¦ÀíµÄ·½Ê½¾ö¶¨µÄ¡£ClosureÒâ¼´Èç¹ûÄ㶨ÒåÁËÒ»¸öº¯Êý£¬Ëü¾ÍÒÔ×î³õ¶¨ÒåµÄÄÚÈÝÔËÐС£(ClosureÏê¼ûOOPµÄ²Î¿¼Êé)ÏÂÃæµÄÀý×ÓÖУ¬ÉèÖÃÁ˶à¸ö´íÎóÐÅÏ¢ÏÔʾ×Ó³ÌÐò£¬ÕâÑùµÄ×Ó³ÌÐò¶¨Òå·½·¨¿ÉÓÃÓÚ´´½¨Ä£°å¡£
#!/usr/bin/perl
sub errorMsg {
my $lvl = shift;
#
# define the subroutine to run when called.
#
return sub {
my $msg = shift; # Define the error type now.
print "Err Level $lvl:$msgn"; }; # print later.
}
$severe = errorMsg("Severe");
$fatal = errorMsg("Fatal");
$annoy = errorMsg("Annoying");
&$severe("Divide by zero");
&$fatal("Did you forget to use a semi-colon?");
&$annoy("Uninitialized variable in use");
½á¹ûÊä³öÈçÏ£º
Err Level Severe:Divide by zero
Err Level Fatal:Did you forget to use a semi-colon?
Err Level Annoying:Uninitialized variable in use
ÉÏÀýÖУ¬×Ó³ÌÐòerrorMsgʹÓÃÁ˾ÖÓò±äÁ¿$lvl£¬ÓÃÓÚ·µ»Ø¸øµ÷ÓÃÕß¡£µ±errorMsg±»µ÷ÓÃʱ£¬$lvlµÄÖµÉèÖõ½·µ»ØµÄ×Ó³ÌÐòÄÚÈÝÖУ¬ËäÈ»ÊÇÓõÄmyº¯Êý¡£Èý´Îµ÷ÓÃÉèÖÃÁËÈý¸ö²»Í¬µÄ$lvl±äÁ¿Öµ¡£µ±errorMsg·µ»ØÊ±£¬$lvlµÄÖµ±£´æµ½Ã¿´Î±»ÉùÃ÷ʱËù²úÉúµÄ×Ó³ÌÐò´úÂëÖС£×îºóÈý¾ä¶Ô²úÉúµÄ×Ó³ÌÐòÒýÓýøÐе÷ÓÃʱ$msgµÄÖµ±»Ìæ»»£¬µ«$lvlµÄÖµÈÔÊÇÏàÓ¦×Ó³ÌÐò´úÂë´´½¨Ê±µÄÖµ¡£
ºÜ»ìÏýÊÇÂð£¿Êǵģ¬ËùÒÔÕâÑùµÄ´úÂëÔÚPerl³ÌÐòÖкÜÉÙ¼û¡£
Æß¡¢Êý×éÓë×Ó³ÌÐò
Êý×éÀûÓÚ¹ÜÀíÏà¹ØÊý¾Ý£¬±¾½ÚÌÖÂÛÈçºÎÏò×Ó³ÌÐò´«µÝ¶à¸öÊý×é¡£Ç°ÃæÎÒÃǽ²¹ýÓÃ@_´«µÝ×Ó³ÌÐòµÄ²ÎÊý£¬µ«ÊÇ@_ÊÇÒ»¸öµ¥Î¬Êý×飬²»¹ÜÄã´«µÝµÄ²ÎÊýÊǶàÉÙ¸öÊý×飬¶¼°´Ðò´æÖüÔÚ@_ÖУ¬¹ÊÓÃÐÎÈçmy(@a,@b)=@_; µÄÓï¾äÀ´»ñÈ¡²ÎÊýֵʱ£¬È«²¿Öµ¶¼¸³¸øÁË@a£¬¶ø@bΪ¿Õ¡£ÄÇôÔõô°ÑÒ»¸öÒÔÉϵÄÊý×é´«µÝ¸ø×Ó³ÌÐòÄØ£¿·½·¨ÊÇÓÃÒýÓ᣼ûÏÂÀý£º
#!/usr/bin/perl
@names = (mickey, goofy, daffy );
@phones = (5551234, 5554321, 666 );
$i = 0;
sub listem {
my ($a,$b) = @_;
foreach (@$a) {
print "a[$i] = " . @$a[$i] . " " . "tb[$i] = " . @$b[$i] ."n";
$i++;
}
}
&listem(@names, @phones);
½á¹ûÊä³öÈçÏ£º
a[0] = mickey b[0] = 5551234
a[1] = goofy b[1] = 5554321
a[2] = daffy b[2] = 666
×¢Ò⣺
1¡¢µ±Ïë´«µÝ¸ø×Ó³ÌÐòµÄ²ÎÊýÊǶàÓÚÒ»¸öµÄÊý×éʱһ¶¨ÒªÊ¹ÓÃÒýÓá£
2¡¢Ò»¶¨²»ÒªÔÚ×Ó³ÌÐòÖÐʹÓÃÐÎÈç (@variable)=@_; µÄÓï¾ä´¦Àí²ÎÊý£¬³ý·ÇÄãÏë°ÑËùÓвÎÊý¼¯Öе½Ò»¸ö³¤µÄÊý×éÖС£
¡¡
°Ë¡¢Îļþ¾ä±úµÄÒýÓÃ
ÓÐʱ£¬±ØÐ뽫ͬһÐÅÏ¢Êä³öµ½²»Í¬µÄÎļþ£¬ÀýÈ磬ij³ÌÐò¿ÉÄÜÔÚÒ»¸öʵÀýÖÐÊä³öµ½ÆÁÄ»£¬ÁíÒ»¸öÊä³öµ½´òÓ¡»ú£¬ÔÙÒ»¸öÊä³öµ½¼Ç¼Îļþ£¬ÉõÖÁͬʱÊä³öµ½ÕâÈý¸öÎļþ¡£Ïà±È½ÏÓÚÿÖÖ´¦Àíдһ¸öµ¥¶ÀµÄÓï¾ä£¬¿ÉÒÔÓиüºÃµÄʵÏÖ·½Ê½ÈçÏ£º
spitOut(*STDIN);
spitOut(*LPHANDLE);
spitOut(*LOGHANDLE);
ÆäÖÐ×Ó³ÌÐòspitOutµÄ´úÂëÈçÏ£º
sub spitOut {
my $fh = shift;
print $fh "Gee Wilbur, I like this lettucen";
}
×¢ÒâÆäÖÐÎļþ¾ä±úÒýÓõÄÓ﷨Ϊ*FILEHANDLE¡£ ºÃ¶«Î÷£¡¸Ðл¸Ðл£¡ ºÃ¶«Î÷£¬3x ½Ì³Ì²»´í£¬¶¥Ò»Ï ºÃ¶«Î÷Ŷ thank you
not suggested!
ÓïÑÔÕâÑùѧ, ÊÇûÓа취ÆÕ¼°´óÖÚºÍÌáÉý×ÔÎÒµÄ,IMHO.½¨Òé¿´Ò»¿´[URL]http://www.pgsqldb.org/bin/view/Perl/PerlProgramming3[/URL]
ËäÈ»·ÒëµÄÓеãÞÖ¿Ú. µ«ÊÇ´Ó·½·¨Ñ§ÉÏ,ÎÒÈÏΪÊÇÖµµÃÍÆ¼öµÄ.
Ò³:
[1]