²é¿´: 1633  |  »Ø¸´: 8
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

[½»Á÷] perl 5 ½Ì³Ì Á¬ÔØ

µÚÒ»Õ ¸ÅÊö

Ò»¡¢PerlÊÇʲô?
£ £  PerlÊÇPractical Extraction and Report LanguageµÄËõд£¬ËüÊÇÓÉLarry WallÉè¼ÆµÄ£¬²¢ÓÉËû²»¶Ï¸üкÍά»¤£¬ÓÃÓÚÔÚUNIX»·¾³Ï±à³Ì¡£
£ £  .Perl¾ßÓи߼¶ÓïÑÔ£¨ÈçC£©µÄÇ¿´óÄÜÁ¦ºÍÁé»îÐÔ¡£ÊÂʵÉÏ£¬Ä㽫¿´µ½£¬ËüµÄÐí¶àÌØÐÔÊÇ´ÓCÓïÑÔÖнèÓÃÀ´µÄ¡£
£ £  .Óë½Å±¾ÓïÑÔÒ»Ñù£¬Perl²»ÐèÒª±àÒëÆ÷ºÍÁ´½ÓÆ÷À´ÔËÐдúÂ룬ÄãÒª×öµÄÖ»ÊÇд³ö³ÌÐò²¢¸æËßPerlÀ´ÔËÐжøÒÑ¡£ÕâÒâζ×ÅPerl¶ÔÓÚСµÄ±à³ÌÎÊÌâµÄ¿ìËÙ½â¾ö·½°¸ºÍΪ´óÐÍʼþ´´½¨Ô­ÐÍÀ´²âÊÔDZÔڵĽâ¾ö·½°¸ÊÇÊ®·ÖÀíÏëµÄ¡£
£ £  .PerlÌṩ½Å±¾ÓïÑÔ£¨ÈçsedºÍawk£©µÄËùÓй¦ÄÜ£¬»¹¾ßÓÐËüÃÇËù²»¾ß±¸µÄºÜ¶à¹¦ÄÜ¡£Perl»¹Ö§³Ösedµ½Perl¼°awdµ½PerlµÄ·­ÒëÆ÷¡£
£ £  ¼ò¶øÑÔÖ®£¬PerlÏóCÒ»ÑùÇ¿´ó£¬Ïóawk¡¢sedµÈ½Å±¾ÃèÊöÓïÑÔÒ»Ñù·½±ã¡£
¶þ¡¢PerlÔÚÄÄÀï?
£ £  Perlͨ³£Î»ÓÚ/usr/local/bin/perl»ò/usr/bin/perlÖС£Äã¿ÉÒÔÔÚInternetÓÃÄäÃûFTPÃâ·ÑµÃµ½Ëü£¬Èçftp://prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz¡£
£ £  °²×°¹ý³ÌΪ£º
£ £  (1)½âѹ£º
£ £  $gunzip perl-5.004.tar.gz
£ £  $tar xvf - £ £  (2)±àÒ룺
£ £  $make makefile
£ £  (3)·ÅÖãº
£ £  ½«±àÒëÉú³ÉµÄ¿ÉÖ´ÐÐÎļþ¿½±´µ½¿ÉÖ´ÐÐÎļþͨ³£ËùÔÚĿ¼£¬È磺
£ £  $copy /usr/local/bin/perl
£ £  ×¢£ºÕâÐèҪϵͳ¹ÜÀíԱȨÏÞ¡£


±±ÃÀ
µØÖ·Ä¿Â¼
ftp.netlabs.comIPµØÖ·£º192.94.48.152
Ŀ¼ /pub/outgoing/perl5.0
ftp.cis.ufl.eduIPµØÖ·£º 128.227.100.198
Ŀ¼ /pub/perl/src/5.0
ftp.uu.netIPµØÖ·£º 192.48.96.9
Ŀ¼ /languages/perl
ftp.khoros.unm.eduIPµØÖ·£º 198.59.155.28
Ŀ¼ /pub/perl
ftp.cbi.tamucc.eduIPµØÖ·£º 165.95.1.3
Ŀ¼ /pub/duff/Perl
ftp.metronet.comIPµØÖ·£º 192.245.137.1
Ŀ¼ /pub/perl/sources
genetics.upenn.eduIPµØÖ·£º 128.91.200.37
Ŀ¼ /perl5

Å·ÖÞ
SiteLocation
ftp.cs.ruu.nlIPµØÖ·£º 131.211.80.17
Ŀ¼ /pub/PERL/perl5.0/src
ftp.funet.fiIPµØÖ·£º 128.214.248.6
Ŀ¼ /pub/languages/perl/ports/perl5
ftp.zrz.tu-berlin.deIPµØÖ·£º 130.149.4.40
Ŀ¼ /pub/unix/perl
src.doc.ic.ac.ukIPµØÖ·£º 146.169.17.5
Ŀ¼ /packages/perl5

°ÄÖÞ

SiteLocation
sungear.mame.mu.oz.auIPµØÖ·£º 128.250.209.2
Ŀ¼ /pub/perl/src/5.0

ÄÏÃÀ
SiteLocation
ftp.inf.utfsm.clIPµØÖ·£º 146.83.198.3
Ŀ¼ /pub/gnu

Èý¡¢ÔËÐÐ
£ £  ÓÃÎı¾±à¼­Æ÷±à¼­ºÃÄãµÄPerl³ÌÐò£¬¼ÓÉÏ¿ÉÖ´ÐÐÊôÐÔ£º$chmod +x ¾Í¿ÉÒÔÖ´ÐÐÁË£º$./¡£Èç¹ûϵͳÌáʾ£º"/usr/local/bin/perl not found"£¬Ôò˵Ã÷ÄãûÓа²×°³É¹¦£¬ÇëÖØÐ°²×°¡£
×¢£ºÄãµÄ³ÌÐòµÄµÚÒ»ÐбØÐëΪ#!/usr/local/bin/perl£¨perlËùÔÚλÖã©¡£
ËÄ¡¢×¢ÊÍ£º
£ £  ×¢Ê͵ķ½·¨ÎªÔÚÓï¾äµÄ¿ªÍ·ÓÃ×Ö·û#£¬È磺
£ £  # this line is a comment
£ £  ×¢£º½¨Òé¾­³£Ê¹ÓÃ×¢ÊÍʹÄãµÄ³ÌÐòÒ×¶Á£¬ÕâÊǺõıà³Ìϰ¹ß¡£
µÚ¶þÕ ¼òµ¥±äÁ¿
»ù±¾ÉÏ£¬¼òµ¥±äÁ¿¾ÍÊÇÒ»¸öÊý¾Ýµ¥Ôª£¬Õâ¸öµ¥Ôª¿ÉÒÔÊÇÊý×Ö»ò×Ö·û´®¡£
Ò»¡¢ÕûÐÍ
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 SequenceDescription
\aBell (beep)
\bBackspace
\cnThe Ctrl+n character
\eEscape
\EEnds the effect of \L, \U or \Q
\fForm feed
\lForces the next letter into lowercase
\LAll following letters are lowercase
\nNewline
\rCarriage return
\QDo not look for special pattern characters
\tTab
\uForce next letter into uppercase
\UAll following letters are uppercase
\vVertical 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ÖУ¬ËùÓеļòµ¥±äÁ¿¶¼ÓÐȱʡ³õʼֵ£º""£¬¼´¿Õ×Ö·û¡£µ«Êǽ¨Ò鏸ËùÓбäÁ¿¸³³õÖµ£¬·ñÔòµ±³ÌÐò±äµÃ´ó¶ø¸´ÔӺ󣬺ÜÈÝÒ׳öÏÖ²»¿ÉÔ¤ÁÏÇÒºÜÄѵ÷ÊԵĴíÎó¡££¨Î´Í꣩

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-12 at 08:31 ]
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

ÏȽø²ÄÁÏÓë·Ö×ÓÄ£Äâ perlÓïÑÔרÀ¸

» ²ÂÄãϲ»¶

¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

¡ï
yuefour(½ð±Ò+1):ÐÁ¿àÁË
µÚÈýÕÂ ²Ù×÷·û
Ò»¡¢ËãÊõ²Ù×÷·û £º+(¼Ó)¡¢-(¼õ)¡¢*(³Ë)¡¢/(³ý)¡¢**(³ËÃÝ)¡¢%(È¡Óà)¡¢-(µ¥Ä¿¸º)
  (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 = ;
£  @array = ; # ^DΪ½áÊøÊäÈëµÄ·ûºÅ
2 ¡¢×Ö·û´®Öеķ½À¨ºÅºÍ±äÁ¿Ìæ»»
£  "$var[0]" ΪÊý×é@varµÄµÚÒ»¸öÔªËØ¡£
£  "$var\[0]" ½«×Ö·û"["תÒ壬µÈ¼ÛÓÚ"$var". "[0]"£¬$var±»±äÁ¿Ìæ»»£¬[0]±£³Ö²»±ä¡£
£  "$[0]" ÒàµÈ¼ÛÓÚ"$var" ."[0]"¡£
£  "$\"ÔòÈ¡ÏûÁË´óÀ¨ºÅµÄ±äÁ¿Ìæ»»¹¦ÄÜ£¬°üº¬ÎÄ×Ö£º$.
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 ("@array\n";
  ½á¹ûΪ£º
£  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
(δÍê)
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
2Â¥2005-06-14 19:15:41
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

µÚÎåÕ Îļþ¶Áд
Ò»¡¢´ò¿ª¡¢¹Ø±ÕÎļþ
  Ó﷨Ϊopen (filevar, filename)£¬ÆäÖÐfilevarΪÎļþ¾ä±ú£¬»òÕß˵ÊdzÌÐòÖÐÓÃÀ´´ú±íijÎļþµÄ´úºÅ£¬filenameΪÎļþÃû£¬Æä·¾¶¿ÉΪÏà¶Ô·¾¶£¬Òà¿ÉΪ¾ø¶Ô·¾¶¡£
£  open(FILE1,"file1");
£  open(FILE1, "/u/jqpublic/file1");
  ´ò¿ªÎļþʱ±ØÐë¾ö¶¨·ÃÎÊģʽ£¬ÔÚPERLÖÐÓÐÈýÖÖ·ÃÎÊģʽ£º¶Á¡¢Ð´ºÍÌí¼Ó¡£ºóÁ½ÖÖģʽµÄÇø±ðÔÚÓÚдģʽ½«Ô­Îļþ¸²¸Ç£¬Ô­ÓÐÄÚÈݶªÊ§£¬ÐÎʽΪ£ºopen(outfile,">outfile");¶øÌí¼ÓģʽÔòÔÚÔ­ÎļþµÄĩβ´¦¼ÌÐøÌí¼ÓÄÚÈÝ£¬ÐÎʽΪ£ºopen(appendfile, ">>appendfile")¡£Òª×¢ÒâµÄÊÇ£¬²»ÄܶÔÎļþͬʱ½øÐжÁºÍд/Ìí¼Ó²Ù×÷¡£
  openµÄ·µ»ØÖµÓÃÀ´È·¶¨´ò¿ªÎļþµÄ²Ù×÷ÊÇ·ñ³É¹¦£¬µ±Æä³É¹¦Ê±·µ»Ø·ÇÁãÖµ£¬Ê§°Üʱ·µ»ØÁ㣬Òò´Ë¿ÉÒÔÈçÏÂÅжϣº
£  if (open(MYFILE, "myfile")) {
£  # here's what to do if the file opened successfully
£  }
  µ±Îļþ´ò¿ªÊ§°Üʱ½áÊø³ÌÐò£º
£  unless (open (MYFILE, "file1")) {
£  die ("cannot open input file file1\n");
£  }
  Òà¿ÉÓÃÂß¼­»ò²Ù×÷·û±íʾÈçÏ£º
£  open (MYFILE, "file1") || die ("Could not open file");
  µ±Îļþ²Ù×÷Íê±Ïºó£¬ÓÃclose(MYFILE); ¹Ø±ÕÎļþ¡£
¶þ¡¢¶ÁÎļþ
  Óï¾ä$line = ;´ÓÎļþÖжÁȡһÐÐÊý¾Ý´æ´¢µ½¼òµ¥±äÁ¿$lineÖв¢°ÑÎļþÖ¸ÕëÏòºóÒÆ¶¯Ò»ÐС£Îª±ê×¼ÊäÈëÎļþ£¬Í¨³£Îª¼üÅÌÊäÈ룬²»ÐèÒª´ò¿ª¡£
  Óï¾ä@array = ;°ÑÎļþµÄÈ«²¿ÄÚÈݶÁÈëÊý×é@array£¬ÎļþµÄÿһÐÐ(º¬»Ø³µ·û)Ϊ@arrayµÄÒ»¸öÔªËØ¡£
Èý¡¢Ð´Îļþ
  ÐÎʽΪ£º
£  open(OUTFILE, ">outfile");
£  print OUTFILE ("Here is an output line.\n");
  ×¢£ºSTDOUT¡¢STDERRΪ±ê×¼Êä³öºÍ±ê×¼´íÎóÎļþ£¬Í¨³£ÎªÆÁÄ»£¬ÇÒ²»ÐèÒª´ò¿ª¡£
ËÄ¡¢ÅжÏÎļþ״̬
1¡¢Îļþ²âÊÔ²Ù×÷·û
  Ó﷨Ϊ£º-op expr£¬È磺
£  if (-e "/path/file1") {
£  print STDERR ("File file1 exists.\n");
£  }

Îļþ²âÊÔ²Ù×÷·û
²Ù×÷·ûÃèÊö
-bÊÇ·ñΪ¿éÉ豸
-c ÊÇ·ñΪ×Ö·ûÉ豸
-d ÊÇ·ñΪĿ¼
-e ÊÇ·ñ´æÔÚ
-f ÊÇ·ñΪÆÕͨÎļþ
-g ÊÇ·ñÉèÖÃÁËsetgidλ
-k ÊÇ·ñÉèÖÃÁËstickyλ
-l ÊÇ·ñΪ·ûºÅÁ´½Ó
-o ÊÇ·ñÓµÓиÃÎļþ
-p ÊÇ·ñΪ¹ÜµÀ
-r ÊÇ·ñ¿É¶Á
-s ÊÇ·ñ·Ç¿Õ
-t ÊÇ·ñ±íʾÖÕ¶Ë
-u ÊÇ·ñÉèÖÃÁËsetuidλ
-w ÊÇ·ñ¿Éд
-x ÊÇ·ñ¿ÉÖ´ÐÐ
-z ÊÇ·ñΪ¿ÕÎļþ
-A ¾àÉϴηÃÎʶ೤ʱ¼ä
-B ÊÇ·ñΪ¶þ½øÖÆÎļþ
-C ¾àÉϴηÃÎÊÎļþµÄinode¶à³¤Ê±¼ä
-M ¾àÉÏ´ÎÐ޸Ķ೤ʱ¼ä
-O ÊÇ·ñֻΪ¡°ÕæÕýµÄÓû§¡±ËùÓµÓÐ
-R ÊÇ·ñÖ»ÓС°ÕæÕýµÄÓû§¡±¿É¶Á
-S ÊÇ·ñΪsocket
-T ÊÇ·ñΪÎı¾Îļþ
-W ÊÇ·ñÖ»ÓÐ"ÕæÕýµÄÓû§"¿Éд
-X ÊÇ·ñÖ»ÓÐ"ÕæÕýµÄÓû§"¿ÉÖ´ÐÐ
×¢£º¡°ÕæÕýµÄÓû§¡±Ö¸µÇ¼ʱָ¶¨µÄuserid£¬Ó뵱ǰ½ø³ÌÓû§IDÏà¶Ô£¬ÃüÁîsuid¿ÉÒԸıäÓÐЧÓû§ID¡£

  Àý£º
£  unless (open(INFILE, "infile")) {
£  die ("Input file infile cannot be opened.\n");
£  }
£  if (-e "outfile") {
£  die ("Output file outfile already exists.\n");
£  }
£  unless (open(OUTFILE, ">outfile")) {
£  die ("Output file outfile cannot be opened.\n");
£  }
  µÈ¼ÛÓÚ
£  open(INFILE, "infile") && !(-e "outfile") &&
£  open(OUTFILE, ">outfile") || die("Cannot open files\n");
Îå¡¢ÃüÁîÐвÎÊý
  ÏóCÒ»Ñù£¬PERLÒ²Óд洢ÃüÁîÐвÎÊýµÄÊý×é@ARGV£¬¿ÉÒÔÓÃÀ´·Ö±ð´¦Àí¸÷¸öÃüÁîÐвÎÊý£»ÓëC²»Í¬µÄÊÇ£¬$ARGV[0]ÊǵÚÒ»¸ö²ÎÊý£¬¶ø²»ÊdzÌÐòÃû±¾Éí¡£
£  $var = $ARGV[0]; # µÚÒ»¸ö²ÎÊý
£  $numargs = @ARGV; # ²ÎÊýµÄ¸öÊý
  PERLÖУ¬<>²Ù×÷·ûʵ¼ÊÉÏÊǶÔÊý×é@ARGVµÄÒþº¬µÄÒýÓã¬Æä¹¤×÷Ô­ÀíΪ£º
1¡¢µ±PERL½âÊÍÆ÷µÚÒ»´Î¿´µ½<>ʱ£¬´ò¿ªÒÔ$ARGV[0]ΪÎļþÃûµÄÎļþ£»
2¡¢Ö´Ðж¯×÷shift(@ARGV); ¼´°ÑÊý×é@ARGVµÄÔªËØÏòÇ°ÒÆ¶¯Ò»¸ö£¬ÆäÔªËØÊýÁ¿¼´¼õÉÙÁËÒ»¸ö¡£
3¡¢<>²Ù×÷·û¶ÁÈ¡ÔÚµÚÒ»²½´ò¿ªµÄÎļþÖеÄËùÓÐÐС£
4¡¢¶ÁÍêºó£¬½âÊÍÆ÷»Øµ½µÚÒ»²½Öظ´¡£
  Àý£º
£  @ARGV = ("myfile1", "myfile2"); #ʵ¼ÊÉÏÓÉÃüÁîÐвÎÊý¸³Öµ
£  while ($line = <>) {
£  print ($line);
£  }
  ½«°ÑÎļþmyfile1ºÍmyfile2µÄÄÚÈÝ´òÓ¡³öÀ´¡£
Áù¡¢´ò¿ª¹ÜµÀ
  ÓóÌÐòµÄÐÎʽҲ¿ÉÒÔÏóÃüÁîÐÐÒ»Ñù´ò¿ªºÍʹÓùܵÀ(ex:ls > tempfile)¡£ÈçÓï¾äopen (MYPIPE, "| cat >hello"); ´ò¿ªÒ»¸ö¹ÜµÀ£¬·¢Ë͵½MYPIPEµÄÊä³ö³ÉΪÃüÁî"cat >hello"µÄÊäÈë¡£ÓÉÓÚcatÃüÁÏÔʾÊäÈëÎļþµÄÄÚÈÝ£¬¹Ê¸ÃÓï¾äµÈ¼ÛÓÚopen(MYPIPE, ">hello"); ÓùܵÀ·¢ËÍÓʼþÈçÏ£º
£  open (MESSAGE, "| mail dave");
£  print MESSAGE ("Hi, Dave! Your Perl program sent this!\n");
£  close (MESSAGE);
µÚÁùÕ ģʽƥÅä
Ò»¡¢¼ò½é
£ Ä£Ê½Ö¸ÔÚ×Ö·û´®ÖÐѰÕÒµÄÌØ¶¨ÐòÁеÄ×Ö·û£¬ÓÉ·´Ð±Ïß°üº¬£º/def/¼´Ä£Ê½def¡£ÆäÓ÷¨Èç½áºÏº¯Êýsplit½«×Ö·û´®ÓÃijģʽ·Ö³É¶à¸öµ¥´Ê£º@array = split(/ /, $line);
¶þ¡¢Æ¥Åä²Ù×÷·û =~¡¢!~
£ =~¼ìÑ鯥ÅäÊÇ·ñ³É¹¦£º$result = $var =~ /abc/;ÈôÔÚ¸Ã×Ö·û´®ÖÐÕÒµ½Á˸Ãģʽ£¬Ôò·µ»Ø·ÇÁãÖµ£¬¼´true£¬²»Æ¥ÅäÔò·µ»Ø0£¬¼´false¡£!~ÔòÏà·´¡£
£ ÕâÁ½¸ö²Ù×÷·ûÊÊÓÚÌõ¼þ¿ØÖÆÖУ¬È磺
£ if ($question =~ /please/) {
£ £ print ("Thank you for being polite!\n");
£ }
£ else {
£ £ print ("That was not very polite!\n");
£ }
Èý¡¢Ä£Ê½ÖеÄÌØÊâ×Ö·û
£ PERLÔÚģʽÖÐÖ§³ÖÒ»Ð©ÌØÊâ×Ö·û£¬¿ÉÒÔÆðµ½Ò»Ð©ÌØÊâµÄ×÷Óá£
1¡¢×Ö·û +
£ +Òâζ×ÅÒ»¸ö»ò¶à¸öÏàͬµÄ×Ö·û£¬È磺/de+f/Ö¸def¡¢deef¡¢deeeeefµÈ¡£Ëü¾¡Á¿Æ¥Å価¿ÉÄܶàµÄÏàͬ×Ö·û£¬Èç/ab+/ÔÚ×Ö·û´®abbcÖÐÆ¥ÅäµÄ½«ÊÇabb£¬¶ø²»ÊÇab¡£
£ µ±Ò»ÐÐÖи÷µ¥´Ê¼äµÄ¿Õ¸ñ¶àÓÚÒ»¸öʱ£¬¿ÉÒÔÈçÏ·ָ
£ £ @array = split (/ +/, $line);
£ ×¢£ºsplitº¯Êýÿ´ÎÓöµ½·Ö¸îģʽ£¬×ÜÊÇ¿ªÊ¼Ò»¸öе¥´Ê£¬Òò´ËÈô$lineÒÔ¿Õ¸ñ´òÍ·£¬Ôò@arrayµÄµÚÒ»¸öÔªËØ¼´Îª¿ÕÔªËØ¡£µ«Æä¿ÉÒÔÇø·ÖÊÇ·ñÕæÓе¥´Ê£¬ÈçÈô$lineÖÐÖ»Óпոñ£¬Ôò@arrayÔòΪ¿ÕÊý×é¡£ÇÒÉÏÀýÖÐTAB×Ö·û±»µ±×÷Ò»¸öµ¥´Ê¡£×¢ÒâÐÞÕý¡£
2¡¢×Ö·û []ºÍ[^]
£ []Òâζ×ÅÆ¥ÅäÒ»×é×Ö·ûÖеÄÒ»¸ö£¬Èç/a[0123456789]c/½«Æ¥Åäa¼ÓÊý×Ö¼ÓcµÄ×Ö·û´®¡£Óë+ÁªºÏʹÓÃÀý£º/d[eE]+f/Æ¥Åädef¡¢dEf¡¢deef¡¢dEdf¡¢dEEEeeeEefµÈ¡£^±íʾ³ýÆäÖ®ÍâµÄËùÓÐ×Ö·û£¬È磺/d[^deE]f/Æ¥Åäd¼Ó·Çe×Ö·û¼ÓfµÄ×Ö·û´®¡£
3¡¢×Ö·û *ºÍ?
£ ËüÃÇÓë+ÀàËÆ£¬Çø±ðÔÚÓÚ*Æ¥Åä0¸ö¡¢1¸ö»ò¶à¸öÏàͬ×Ö·û£¬?Æ¥Åä0¸ö»ò1¸ö¸Ã×Ö·û¡£Èç/de*f/Æ¥Åädf¡¢def¡¢deeeefµÈ£»/de?f/Æ¥Åädf»òdef¡£
4¡¢×ªÒå×Ö·û
£ Èç¹ûÄãÏëÔÚģʽÖаüº¬Í¨³£±»¿´×÷ÌØÊâÒâÒåµÄ×Ö·û£¬ÐëÔÚÆäǰ¼ÓбÏß"\"¡£È磺/\*+/ÖÐ\*¼´±íʾ×Ö·û*£¬¶ø²»ÊÇÉÏÃæÌáµ½µÄÒ»¸ö»ò¶à¸ö×Ö·ûµÄº¬Ò塣бÏߵıíʾΪ/\\/¡£ÔÚPERL5ÖпÉÓÃ×Ö·û¶Ô\QºÍ\EÀ´×ªÒå¡£
5¡¢Æ¥ÅäÈÎÒâ×Öĸ»òÊý×Ö
£ ÉÏÃæÌᵽģʽ/a[0123456789]c/Æ¥Åä×Öĸa¼ÓÈÎÒâÊý×Ö¼ÓcµÄ×Ö·û´®£¬ÁíÒ»ÖÖ±íʾ·½·¨Îª£º/a[0-9]c/£¬ÀàËÆµÄ£¬[a-z]±íʾÈÎÒâСд×Öĸ£¬[A-Z]±íʾÈÎÒâ´óд×Öĸ¡£ÈÎÒâ´óСд×Öĸ¡¢Êý×ֵıíʾ·½·¨Îª£º/[0-9a-zA-Z]/¡£
6¡¢ÃªÄ£Ê½

êÃèÊö
^ »ò \A½öÆ¥Åä´®Ê×
$ »ò \Z½öÆ¥Å䴮β
\bÆ¥Åäµ¥´Ê±ß½ç
\Bµ¥´ÊÄÚ²¿Æ¥Åä

£ Àý1£º/^def/ֻƥÅäÒÔdef´òÍ·µÄ×Ö·û´®£¬/$def/ֻƥÅäÒÔdef½áβµÄ×Ö·û´®£¬½áºÏÆðÀ´µÄ/^def$/ֻƥÅä×Ö·û´®def(?)¡£\AºÍ\ZÔÚ¶àÐÐÆ¥ÅäʱÓë^ºÍ$²»Í¬¡£
£ Àý2£º¼ìÑé±äÁ¿ÃûµÄÀàÐÍ£º
£ £ if ($varname =~ /^\$[A-Za-z][_0-9a-zA-Z]*$/) {
£ £ £ print ("$varname is a legal scalar variable\n");
£ £ } elsif ($varname =~ /^@[A-Za-z][_0-9a-zA-Z]*$/) {
£ £ £ print ("$varname is a legal array variable\n");
£ £ } elsif ($varname =~ /^[A-Za-z][_0-9a-zA-Z]*$/) {
£ £ £ print ("$varname is a legal file variable\n");
£ £ } else {
£ £ £ print ("I don't understand what $varname is.\n");
£  }
£ Àý3£º\bÔÚµ¥´Ê±ß½çÆ¥Å䣺/\bdef/Æ¥ÅädefºÍdefghiµÈÒÔdef´òÍ·µÄµ¥´Ê£¬µ«²»Æ¥Åäabcdef¡£/def\b/Æ¥ÅädefºÍabcdefµÈÒÔdef½áβµÄµ¥´Ê£¬µ«²»Æ¥Åädefghi£¬/\bdef\b/ֻƥÅä×Ö·û´®def¡£×¢Ò⣺/\bdef/¿ÉÆ¥Åä$defghi£¬ÒòΪ$²¢²»±»¿´×÷Êǵ¥´ÊµÄ²¿·Ö¡£
£ Àý4£º\BÔÚµ¥´ÊÄÚ²¿Æ¥Å䣺/\Bdef/Æ¥ÅäabcdefµÈ£¬µ«²»Æ¥Åädef£»/def\B/Æ¥ÅädefghiµÈ£»/\Bdef\B/Æ¥Åäcdefg¡¢abcdefghiµÈ£¬µ«²»Æ¥Åädef,defghi,abcdef¡£
7¡¢Ä£Ê½ÖеıäÁ¿Ìæ»»
£ ½«¾ä×ӷֳɵ¥´Ê£º
£ £ $pattern = "[\\t ]+";
£ £ @words = split(/$pattern/, $line);
8¡¢×Ö·û·¶Î§×ªÒå

E תÒå×Ö·ûÃèÊö·¶Î§
\dÈÎÒâÊý×Ö[0-9]
\D³ýÊý×ÖÍâµÄÈÎÒâ×Ö·û [^0-9]
\wÈÎÒâµ¥´Ê×Ö·û[_0-9a-zA-Z]
\WÈÎÒâ·Çµ¥´Ê×Ö·û[^_0-9a-zA-Z]
\s¿Õ°×[ \r\t\n\f]
\S·Ç¿Õ°×[^ \r\t\n\f]

£ Àý£º/[\da-z]/Æ¥ÅäÈÎÒâÊý×Ö»òСд×Öĸ¡£
9¡¢Æ¥ÅäÈÎÒâ×Ö·û
£ ×Ö·û"."Æ¥Åä³ý»»ÐÐÍâµÄËùÓÐ×Ö·û£¬Í¨³£Óë*ºÏÓá£
10¡¢Æ¥ÅäÖ¸¶¨ÊýÄ¿µÄ×Ö·û
£ ×Ö·û¶Ô{}Ö¸¶¨ËùÆ¥Åä×Ö·ûµÄ³öÏÖ´ÎÊý¡£È磺/def/Æ¥Åädef,deefºÍdeeef£»/def/Æ¥Åädeeef£»/def/Æ¥Åä²»ÉÙÓÚ3¸öeÔÚdºÍfÖ®¼ä£»/def/Æ¥Åä²»¶àÓÚ3¸öeÔÚdºÍfÖ®¼ä¡£
11¡¢Ö¸¶¨Ñ¡Ïî
£ ×Ö·û"|"Ö¸¶¨Á½¸ö»ò¶à¸öÑ¡ÔñÀ´Æ¥Åäģʽ¡£È磺/def|ghi/Æ¥Åädef»òghi¡£
£ Àý£º¼ìÑéÊý×Ö±íʾºÏ·¨ÐÔ
£ if ($number =~ /^-?\d+$|^-?0[xX][\da-fa-F]+$/) {
£ £ print ("$number is a legal integer.\n");
£ } else {
£ £ print ("$number is not a legal integer.\n");
£ }
£ ÆäÖÐ ^-?\d+$ Æ¥ÅäÊ®½øÖÆÊý×Ö£¬^-?0[xX][\da-fa-F]+$ Æ¥ÅäÊ®Áù½øÖÆÊý×Ö¡£
12¡¢Ä£Ê½µÄ²¿·ÖÖØÓÃ
£ µ±Ä£Ê½ÖÐÆ¥ÅäÏàͬµÄ²¿·Ö³öÏÖ¶à´Îʱ£¬¿ÉÓÃÀ¨ºÅÀ¨ÆðÀ´£¬ÓÃ\nÀ´¶à´ÎÒýÓã¬ÒÔ¼ò»¯±í´ïʽ£º
/\d([\W])\d\1\d/ Æ¥Å䣺
£ £ 12-05-92
£ £ 26.11.87
£ £ 07 04 92µÈ
£ ×¢Ò⣺/\d([\W])\d\1\d/ ²»Í¬ÓÚ/(\d)([\W])\1\2\1/ £¬ºóÕßֻƥÅäÐÎÈç17-17-17µÄ×Ö·û´®£¬¶ø²»Æ¥Åä17-05-91µÈ¡£
13¡¢×ªÒåºÍÌØ¶¨×Ö·ûµÄÖ´ÐдÎÐò
£ Ïó²Ù×÷·ûÒ»Ñù£¬×ªÒåºÍÌØ¶¨×Ö·ûÒ²ÓÐÖ´ÐдÎÐò£º

ÌØÊâ×Ö·ûÃèÊö
()ģʽÄÚ´æ
+ * ? {}³öÏÖ´ÎÊý
^ $ \b \Bê
|Ñ¡Ïî

14¡¢Ö¸¶¨Ä£Ê½¶¨½ç·û
£ È±Ê¡µÄ£¬Ä£Ê½¶¨½ç·ûΪ·´Ð±Ïß/£¬µ«Æä¿ÉÓÃ×Öĸm×ÔÐÐÖ¸¶¨£¬È磺
£ £ m!/u/jqpublic/perl/prog1! µÈ¼ÛÓÚ/\/u\/jqpublic\/perl\/prog1/
£ ×¢£ºµ±ÓÃ×Öĸ'×÷Ϊ¶¨½ç·ûʱ£¬²»×ö±äÁ¿Ìæ»»£»µ±ÓÃÌØÊâ×Ö·û×÷Ϊ¶¨½ç·ûʱ£¬ÆäתÒ幦ÄÜ»òÌØÊ⹦Äܼ´²»ÄÜʹÓá£
15¡¢Ä£Ê½´ÎÐò±äÁ¿
£ ÔÚģʽƥÅäºóµ÷ÓÃÖØÓò¿·ÖµÄ½á¹û¿ÉÓñäÁ¿$n£¬È«²¿µÄ½á¹ûÓñäÁ¿$Content$amp;¡£
£ £ $string = "This string contains the number 25.11.";
£ £ $string =~ /-?(\d+)\.?(\d+)/; # Æ¥Åä½á¹ûΪ25.11
£ £ $integerpart = $1; # now $integerpart = 25
£ £ $decimalpart = $2; # now $decimalpart = 11
£ £ $totalpart = $Content$amp;; # now totalpart = 25.11
ËÄ¡¢Ä£Ê½Æ¥ÅäÑ¡Ïî

Ñ¡ÏîÃèÊö
gÆ¥ÅäËùÓпÉÄܵÄģʽ
iºöÂÔ´óСд
m½«´®ÊÓΪ¶àÐÐ
oÖ»¸³ÖµÒ»´Î
s½«´®ÊÓΪµ¥ÐÐ
xºöÂÔģʽÖеĿհ×

1¡¢Æ¥ÅäËùÓпÉÄܵÄģʽ(gÑ¡Ïî)
£ @matches = "balata" =~ /.a/g; # now @matches = ("ba", "la", "ta")
£ Æ¥ÅäµÄÑ­»·£º
£ while ("balata" =~ /.a/g) {
£ £ $match = $Content$amp;;
£ £ print ("$match\n");
£ }
£ ½á¹ûΪ£º
£ £ ba
£ £ la
£ £ ta
£ µ±Ê¹ÓÃÁËÑ¡Ïîgʱ£¬¿ÉÓú¯ÊýposÀ´¿ØÖÆÏÂ´ÎÆ¥ÅäµÄÆ«ÒÆ£º
£ £ $offset = pos($string);
£ £ pos($string) = $newoffset;
2¡¢ºöÂÔ´óСд(iÑ¡Ïî)Àý
£ /de/i Æ¥Åäde,dE,DeºÍDE¡£
3¡¢½«×Ö·û´®¿´×÷¶àÐÐ(mÑ¡Ïî)
£ ÔÚ´ËÇé¿öÏ£¬^·ûºÅÆ¥Åä×Ö·û´®µÄÆðʼ»òеÄÒ»ÐÐµÄÆðʼ£»$·ûºÅÆ¥ÅäÈÎÒâÐеÄĩβ¡£
4¡¢Ö»Ö´ÐÐÒ»´Î±äÁ¿Ìæ»»Àý
£ $var = 1;
£ $line = ;
£ while ($var < 10) {
£ £ $result = $line =~ /$var/o;
£ £ $line = ;
£ £ $var++;
£ }
£ Ã¿´Î¾ùÆ¥Åä/1/¡£
5¡¢½«×Ö·û´®¿´×÷µ¥ÐÐÀý
£ /a.*bc/sÆ¥Åä×Ö·û´®axxxxx \nxxxxbc£¬µ«/a.*bc/Ôò²»Æ¥Åä¸Ã×Ö·û´®¡£
6¡¢ÔÚģʽÖкöÂÔ¿Õ¸ñ
£ /\d ([\W]) \d \1 \d/xµÈ¼ÛÓÚ/\d([\W])\d\1\d/¡£
Îå¡¢Ìæ»»²Ù×÷·û
£ Ó﷨Ϊs/pattern/replacement/£¬ÆäЧ¹ûΪ½«×Ö·û´®ÖÐÓëpatternÆ¥ÅäµÄ²¿·Ö»»³Éreplacement¡£È磺
£ £ $string = "abc123def";
£ £ $string =~ s/123/456/; # now $string = "abc456def";
£ ÔÚÌæ»»²¿·Ö¿ÉʹÓÃģʽ´ÎÐò±äÁ¿$n£¬Èçs/(\d+)/[$1]/£¬µ«ÔÚÌæ»»²¿·Ö²»Ö§³ÖģʽµÄÌØÊâ×Ö·û£¬Èç{},*,+µÈ£¬Èçs/abc/[def]/½«°ÑabcÌæ»»Îª[def]¡£
£ Ìæ»»²Ù×÷·ûµÄÑ¡ÏîÈçÏÂ±í£º

Ñ¡ÏîÃèÊö
g¸Ä±äģʽÖеÄËùÓÐÆ¥Åä
iºöÂÔģʽÖеĴóСд
eÌæ»»×Ö·û´®×÷Ϊ±í´ïʽ
m½«´ýÆ¥Åä´®ÊÓΪ¶àÐÐ
o½ö¸³ÖµÒ»´Î
s½«´ýÆ¥Åä´®ÊÓΪµ¥ÐÐ
xºöÂÔģʽÖеĿհ×

£ ×¢£ºeÑ¡Ïî°ÑÌæ»»²¿·ÖµÄ×Ö·û´®¿´×÷±í´ïʽ£¬ÔÚÌæ»»Ö®Ç°ÏȼÆËãÆäÖµ£¬È磺
£ £ $string = "0abc1";
£ £ $string =~ s/[a-zA-Z]+/$Content$amp; x 2/e; # now $string = "0abcabc1"
Áù¡¢·­Òë²Ù×÷·û
£ ÕâÊÇÁíÒ»ÖÖÌæ»»·½Ê½£¬Óï·¨È磺tr/string1/string2/¡£Í¬Ñù£¬string2ÎªÌæ»»²¿·Ö£¬µ«ÆäЧ¹ûÊǰÑstring1ÖеĵÚÒ»¸ö×Ö·ûÌæ»»Îªstring2ÖеĵÚÒ»¸ö×Ö·û£¬°Ñstring1Öеĵڶþ¸ö×Ö·ûÌæ»»Îªstring2Öеĵڶþ¸ö×Ö·û£¬ÒÀ´ËÀàÍÆ¡£È磺
£ £ $string = "abcdefghicba";
£ £ $string =~ tr/abc/def/; # now string = "defdefghifed"
£ µ±string1±Èstring2³¤Ê±£¬Æä¶àÓà×Ö·ûÌæ»»Îªstring2µÄ×îºóÒ»¸ö×Ö·û£»µ±string1ÖÐͬһ¸ö×Ö·û³öÏÖ¶à´Îʱ£¬½«Ê¹ÓõÚÒ»¸öÌæ»»×Ö·û¡£
£ ·­Òë²Ù×÷·ûµÄÑ¡ÏîÈçÏ£º

Ñ¡ÏîÃèÊö
c·­ÒëËùÓÐδָ¶¨×Ö·û
dɾ³ýËùÓÐÖ¸¶¨×Ö·û
s°Ñ¶à¸öÏàͬµÄÊä³ö×Ö·ûËõ³ÉÒ»¸ö

£ Èç$string =~ tr/\d/ /c;°ÑËùÓзÇÊý×Ö×Ö·ûÌæ»»Îª¿Õ¸ñ¡£$string =~ tr/\t //d£»É¾³ýtabºÍ¿Õ¸ñ£»£ $string =~ tr/0-9/ /cs£»°ÑÊý×Ö¼äµÄÆäËü×Ö·ûÌæ»»ÎªÒ»¸ö¿Õ¸ñ¡£

Æß¡¢À©Õ¹Ä£Ê½Æ¥Åä
£ PERLÖ§³ÖPERL4ºÍ±ê×¼UNIXģʽƥÅä²Ù×÷ËùûÓеÄһЩģʽƥÅäÄÜÁ¦¡£ÆäÓ﷨Ϊ£º(?pattern)£¬ÆäÖÐcÊÇÒ»¸ö×Ö·û£¬patternÊÇÆð×÷ÓõÄģʽ»ò×Óģʽ¡£
1¡¢²»´æÖüÀ¨ºÅÄ򵀮¥ÅäÄÚÈÝ
£ ÔÚPERLµÄģʽÖУ¬À¨ºÅÄÚµÄ×Óģʽ½«´æÖüÔÚÄÚ´æÖУ¬´Ë¹¦Äܼ´È¡Ïû´æÖü¸ÃÀ¨ºÅÄ򵀮¥ÅäÄÚÈÝ£¬Èç/(?:a|b|c)(d|e)f\1/ÖеÄ\1±íʾÒÑÆ¥ÅäµÄd»òe£¬¶ø²»ÊÇa»òb»òc¡£
2¡¢ÄÚǶģʽѡÏî
£ Í¨³£Ä£Ê½Ñ¡ÏîÖÃÓÚÆäºó£¬ÓÐËĸöÑ¡Ïi¡¢m¡¢s¡¢x¿ÉÒÔÄÚǶʹÓã¬Ó﷨Ϊ£º/(?option)pattern/£¬µÈ¼ÛÓÚ/pattern/option¡£
3¡¢¿Ï¶¨µÄºÍ·ñ¶¨µÄÔ¤¼ûÆ¥Åä
£ ¿Ï¶¨µÄÔ¤¼ûÆ¥ÅäÓ﷨Ϊ/pattern(?=string)/£¬ÆäÒâÒåΪƥÅäºóÃæÎªstringµÄģʽ£¬Ïà·´µÄ£¬(?!string)ÒâÒåΪƥÅäºóÃæ·ÇstringµÄģʽ£¬È磺
£ £ $string = "25abc8";
£ £ $string =~ /abc(?=[0-9])/;
£ £ $matched = $Content$amp;; # $Content$amp;ΪÒÑÆ¥ÅäµÄģʽ£¬´Ë´¦Îªabc£¬¶ø²»ÊÇabc8
4¡¢Ä£Ê½×¢ÊÍ
£ PERL5ÖпÉÒÔÔÚģʽÖÐÓÃ?#À´¼Ó×¢ÊÍ£¬È磺
£ £ if ($string =~ /(?i)[a-z](?# match two or three alphabetic characters)/ {
£ £ £ ...
£ £ }
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
3Â¥2005-06-14 19:16:56
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

µÚÆßÕ ¿ØÖƽṹ
Ò»¡¢Ìõ¼þÅжÏ
  if ( {
£ 
  }
  elsif ( ) {
£ 
  }
  ...
  else{
£ 
  }
¶þ¡¢Ñ­»·£º
1¡¢whileÑ­»·
  while ( ) {
£ 
  }
2¡¢untilÑ­»·
  until ( ) {
£ 
  }
3¡¢ÀàCµÄforÑ­»· £¬Èç
  for ($count=1; $count <= 5; $count++) {
£  # statements inside the loop go here
  }
ÏÂÃæÊÇÔÚforÑ­»·ÖÐʹÓöººÅ²Ù×÷·ûµÄÀý×Ó£º
  for ($line = , $count = 1; $count <= 3;£  $line = , $count++) {
£  print ($line);
  }
ËüµÈ¼ÛÓÚÏÂÁÐÓï¾ä£º
  $line = ;
  $count = 1;
  while ($count <= 3) {
£  print ($line);
£  $line = ;
£  $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 found\n"; # ±äÁ¿$AUTOLOAD¼´Î´ÕÒµ½µÄ×Ó³ÌÐòÃû
£  print("arguments passed: @_\n";
  }
  Èôͬһ¸öÔ¤¶¨Òå×Ó³ÌÐò¶¨ÒåÁ˶à¸ö£¬ÔòBEGIN˳ÐòÖ´ÐУ¬ENDÄæÐòÖ´ÐС£
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
4Â¥2005-06-14 19:17:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

¡ï ¡ï
yuefour(½ð±Ò+2):ÐÁ¿àÁË
µÚ¾ÅÕ ¹ØÁªÊý×é/¹þÏ£±í
Ò»¡¢Êý×é±äÁ¿µÄÏÞÖÆ
£  ÔÚÇ°Ãæ½²µÄÊý×é±äÁ¿ÖУ¬¿ÉÒÔͨ¹ýϱê·ÃÎÊÆäÖеÄÔªËØ¡£ÀýÈ磬ÏÂÁÐÓï¾ä·ÃÎÊÊý×é@arrayµÄµÚÈý¸öÔªËØ£º
£  $scalar = $array[2];
£  ËäÈ»Êý×éºÜÓÐÓ㬵«ËüÃÇÓÐÒ»¸öÏÔÖøÈ±ÏÝ£¬¼´ºÜÄѼÇסÄĸöÔªËØ´æÖüµÄʲôÄÚÈÝ¡£¼ÙÈçÎÒÃÇÀ´Ð´Ò»¸ö³ÌÐò¼ÆËãijÎļþÖÐÊ××Öĸ´óдµÄµ¥´Ê³öÏֵĴÎÊý£¬ÓÃÊý×éÀ´ÊµÏ־ͱȽÏÀ§ÄÑ£¬³ÌÐò´úÂëÈçÏ£º
1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = ) {
4 :£  while ($inputline =~ /\b[A-Z]\S+/g) {
5 :£ £  $word = $Content$amp;;
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
$number
$integer
£  ¼òµ¥±äÁ¿Ò²¿É×÷Ϊϱ꣬È磺
£  $fruit
ËÄ¡¢Ôö¼ÓÔªËØ
£  ´´½¨Ò»¸ö¹ØÁªÊý×éÔªËØ×î¼òµ¥µÄ·½·¨ÊǸ³Öµ£¬ÈçÓï¾ä$fruit = 1£» °Ñ1¸³¸ø¹ØÁªÊý×é%fruitϱêΪbananasµÄÔªËØ£¬Èç¹û¸ÃÔªËØ²»´æÔÚ£¬Ôò±»´´½¨£¬Èç¹ûÊý×é%fruit´ÓδʹÓùý£¬Ò²±»´´½¨¡£
£  ÕâÒ»ÌØÐÔʹµÃ¹ØÁªÊý×éºÜÈÝÒ×ÓÃÓÚ¼ÆÊý¡£ÏÂÃæÎÒÃÇÓùØÁªÊý×é¸ÄдÉÏÃæµÄ³ÌÐò£¬×¢ÒâʵÏÖͬÑùµÄ¹¦Äܴ˳ÌÐò¼ò»¯ÁËÐí¶à¡£

1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = ) {
4 :£  while ($inputline =~ /\b[A-Z]\S+/g) {
5 :£ £  $word = $Content$amp;;
6 :£ £  $word =~ s/[;.,:-]$//; # remove punctuation
7 :£ £  $wordlist += 1;
8 :£  }
9 : }
10: print ("Capitalized words and number of occurrences:\n");
11: foreach $capword (keys(%wordlist)) {
12:£  print ("$capword: $wordlist\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\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 = ;
4: $inputline =~ s/^\s+|\s+\n$//g;
5: %fruit = split(/\s+/, $inputline);
6: print ("Number of bananas: $fruit\n");
£  ÔËÐнá¹ûÈçÏ£º
oranges 5 apples 7 bananas 11 cherries 6
Number of bananas: 11
Æß¡¢ÔªËصÄÔöɾ
£  Ôö¼ÓÔªËØÒѾ­½²¹ý£¬¿ÉÒÔͨ¹ý¸øÒ»¸öδ³öÏÖ¹ýµÄÔªËØ¸³ÖµÀ´Ïò¹ØÁªÊý×éÖÐÔö¼ÓÐÂÔªËØ£¬Èç$fruit = 1;´´½¨Ï±êΪlime¡¢ÖµÎª1µÄÐÂÔªËØ¡£
£  ɾ³ýÔªËØµÄ·½·¨ÊÇÓÃÄÚǶº¯Êýdelete£¬ÈçÓûɾ³ýÉÏÊöÔªËØ£¬Ôò£º
£  delete ($fruit);
×¢Ò⣺
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;
}
£  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 = ) {
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 = "";
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 = $header;
36:£ £  $header = $word;
37:£ £  return;
38:£  }
39:£  # find place where word belongs
40:£  $pointer = $header;
41:£  while ($wordlist ne "" &&
42:£ £  $wordlist lt $word) {
43:£ £  $pointer = $wordlist;
44:£  }
45:£  # if word already seen, do nothing
46:£  return if ($word eq $wordlist);
47:£  $wordlist = $wordlist;
48:£  $wordlist = $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 ("$pointer\n");
57:£ £  $pointer = $wordlist;
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´óÓÚ»òµÈÓÚ$wordΪֹ¡£½ÓÏÂÀ´46Ðв鿴¸Ãµ¥´ÊÊÇ·ñÒÑÔÚÁ´±íÖУ¬Èç¹ûÔھͷµ»Ø£¬·ñÔò47~48Ðн«ÆäÌí¼Óµ½Á´±íÖС£Ê×ÏÈ47Ðд´½¨ÐÂÔªËØ$wordlist£¬ÆäֵΪ$wordlist£¬Õâʱ$wordlistºÍ$wordlistÖ¸Ïòͬһ¸öµ¥´Ê¡£È»ºó£¬48Ðн«$wordlistµÄÖµ¸³Îª$word£¬¼´½«$wordlistÖ¸Ïò¸Õ´´½¨µÄÐÂÔªËØ$wordlist¡£
£  ×îºóµ±´¦ÀíÍê±Ïºó£¬×Ó³ÌÐòprint_list()ÒÀ´ÎÊä³öÁ´±í£¬¾ÖÓò±äÁ¿$pointerº¬ÓÐÕýÔÚÊä³öµÄÖµ£¬$wordlistΪÏÂÒ»¸öÒªÊä³öµÄÖµ¡£
£  ×¢£ºÒ»°ã²»ÐèÒªÓÃÁ´±íÀ´×öÕâЩ¹¤×÷£¬ÓÃ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 = 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 ne "") {
20:£ £  &print_tree($tree);
21:£  }
22:£  print ("$nodename\n");
23:£  if ($tree ne "") {
24:£ £  &print_tree($tree);
25:£  }
26: }
£  ½á¹ûÊä³öÈçÏ£º

grandchild1
child1
grandchild2
parent
grandchild3
child2
grandchild4
£  ¸Ã³ÌÐò´´½¨µÄ¶þ²æÊ÷ÈçÏÂͼ£º

½Ì³Ì/tree.gif" tppabs="/UpLoadFiles/NewsPhoto/rl5atree.gif">
£  ×¢Ò⺯Êýprint_tree()ÒÔ´ÎÐò¡°×ó×ÓÊ÷¡¢½Úµã¡¢ÓÒ×ÓÊ÷¡±À´Êä³ö¸÷½ÚµãµÄÃû×Ö£¬ÕâÖÖ±éÀú´ÎÐò³ÆÎª¡°×óÐò±éÀú¡±¡£Èç¹û°ÑµÚ22ÐÐÒÆµ½19ÐÐǰ£¬ÏÈÊä³ö½ÚµãÃ÷£¬ÔÙÊä³ö×ó×ÓÊ÷¡¢ÓÒ×ÓÊ÷£¬ÔòΪ¡°ÖÐÐò±éÀú¡±£¬Èç¹û°ÑµÚ22ÐÐÒÆµ½25Ðкó£¬Êä³ö´ÎÐòΪ×ó×ÓÊ÷¡¢ÓÒ×ÓÊ÷¡¢½Úµã£¬ÔòΪ¡°ÓÒÐò±éÀú¡±¡£
£  ¿ÉÒÔÓÃͬÑùµÄ·½·¨£¬¼´Á¬½Ó×Ö·û´®¹¹³Éϱ꣬À´´´½¨ÆäËüµÄÊý¾Ý½á¹¹£¬ÈçÊý¾Ý¿âµÈ¡£

µÚʮՠ¸ñʽ»¯Êä³ö
£  ÎÒÃÇÒѾ­¼û¹ýÓÃprintº¯Êý½«Ô­Ê¼µÄδ¸ñʽ»¯µÄÎı¾Êä³öµ½Îļþ£¬±¾Õ½²ÊöÈçºÎÓú¯ÊýwriteºÍ´òÓ¡¸ñʽÀ´Éú³É¸ñʽ»¯µÄÊä³ö¡£
_of_output
.
£  ´òÓ¡¸ñʽÃûformatnameµÄÃüÃû¹æÔòÓëÒ»°ã±äÁ¿Ïàͬ¡£½áÊøÐÐΪһ¸ö¾äºÅ£¬´ËÐв»ÄÜÓÐÈÎºÎÆäËü×Ö·û£¬°üÀ¨¿Õ¸ñ£¬¾äºÅ±ØÐëÊǸÃÐеÚÒ»¸ö×Ö·û¡£
£  ´òÓ¡¸ñʽµÄ¶¨ÒåÏó×Ó³ÌÐòÒ»Ñù¿ÉÒÔ·ÅÔÚÈκεط½£¬ÉõÖÁ¿ÉÒÔ·ÅÔÚÌõ¼þÓï¾äÖУ¬µ«ÊÇ×îºÃ°ÑËüÃǼ¯ÖзÅÔÚ³ÌÐòµÄ¿ªÍ·»ò½áβ¡£
4 : write;
5 :
6 : format MYFORMAT =
7 : ===================================
8 : Here is the text I want to display.
9 : ===================================
10: .
£  ½á¹ûÊä³öÈçÏ£º

$ program
===================================
Here is the text I want to display.
===================================
$
£  Èç¹û²»ÓÃ$~Ö¸¶¨´òÓ¡¸ñʽ£¬Perl½âÊÍÆ÷¾Í¼Ù¶¨ÒªÊ¹ÓõĸñʽÃûÓëҪдÈëµÄÎļþ±äÁ¿Í¬Ãû£¬ÔÚ±¾ÀýÖУ¬Èç¹û²»Ö¸¶¨Ê¹ÓÃMYFORMAT£¬ÔòPerl½âÊÍÆ÷ÊÔͼʹÓÃÃûΪSTDOUTµÄ´òÓ¡¸ñʽ¡£
Èý¡¢ÔÚ´òÓ¡¸ñʽÖÐÏÔʾֵ
£  ÎÒÃÇʹÓôòÓ¡¸ñʽµÄÖ÷ÒªÔ­Òòµ±È»ÊǸñʽ»¯´æÖüÔÚ¼òµ¥±äÁ¿»òÊý×é±äÁ¿ÖеÄÖµ´Ó¶øÉú³É¿É¶ÁÐԺõÄÊä³ö£¬ÕâһĿµÄÓá°ÖµÓò¡±À´ÊµÏÖ¡£Ã¿¸öÖµÓòÖ¸¶¨Ò»¸öÖµ£¬Èç±äÁ¿»ò±í´ïʽ£¬µ÷ÓÃwriteº¯Êýʱ£¬¸ÃÖµ¾ÍÒÔÖµÓòÖ¸¶¨µÄ¸ñʽÏÔʾ¡£
1¡¢Í¨ÓõĴòÓ¡¸ñʽ
£  ´òÓ¡¸ñʽµÄÒ»¸öȱµãÊǶ¨ÒåÖаüº¬Á˱äÁ¿Ãû£¬ÀýÈ磺

format MYFORMAT =
==========================================================
The winning number is @<<<<< $winnum
==========================================================
.
£  µ±µ÷ÓÃwriteÊä³ö´Ë¸ñʽʱ£¬±ØÐë¼Ç×ÅËüʹÓÃÁ˱äÁ¿$winnum¡£ÓÃ×Ó³ÌÐòºÍ¾ÖÓò±äÁ¿¾Í¿ÉÒÔ´´½¨¸üͨÓõĴòÓ¡¸ñʽ¡£ÏÂÀý´ÓSTDINÊäÈëÒ»¸öÎļþ²¢Êä³öÎå¸ö³öÏÖÆµÂÊ×î¸ßµÄ×Öĸ¼°³öÏÖ´ÎÊý¡£

1 : #!/usr/local/bin/perl
2 :
3 : while ($line = ) {
4 :£  $line =~ tr/A-Z/a-z/;
5 :£  $line =~ s/[^a-z]//g;
6 :£  @letters = split(//, $line);
7 :£  foreach $letter (@letters) {
8 :£ £  $lettercount += 1;
9 :£  }
10: }
11:
12: $~ = "WRITEHEADER";
13: write;
14: $count = 0;
15: foreach $letter (reverse sort occurrences
16:£ £ £  (keys(%lettercount))) {
17:£  &write_letter($letter, $lettercount);
18:£  last if (++$count == 5);
19: }
20:
21: sub occurrences {
22:£  $lettercount <=> $lettercount;
23: }
24: sub write_letter {
25:£  local($letter, $value) = @_;
26:
27:£  $~ = "WRITELETTER";
28:£  write;
29: }
30: format WRITEHEADER =
31: The five most frequently occurring letters are:
32: .
33: format WRITELETTER =
34:£  @: @<<<<<<
35:£  $letter, $value
36: .
£  ÔËÐнá¹ûÈçÏ£º

$ program
This is a test file.
This test file contains some input.
The quick brown fox jumped over the lazy dog.
^D
The five most frequently occurring letters are:
£ £ £  t: 10
£ £ £  e: 9
£ £ £  i: 8
£ £ £  s: 7
£ £ £  o: 6
$

2¡¢¸ñʽºÍ¾ÖÓò±äÁ¿
£  ÔÚÉÏÀýÖУ¬Äã¿ÉÄÜÒѾ­×¢Òâµ½×Ó³ÌÐòwrite_letterµ÷ÓÃwriteÊä³ö×Öĸ¼°Æä³öÏÖ´ÎÊý£¬¼´Ê¹¸ñʽ¶¨ÒåÔÚ×Ó³ÌÐòÍⲿÈÔÄÜÕý³£¹¤×÷¡£ÔÚµÚ17ÐÐÖн«×Öĸ¼°Æä³öÏÖ´ÎÊý´«µÝ¸ø¸Ã×Ó³ÌÐò£¬ÔÚ×Ó³ÌÐòÖУ¬´òÓ¡¸ñʽʹÓþÖÓò±äÁ¿$letterºÍ$value£¬ÕâÑù±£Ö¤ÁËÔÚforeachÑ­»·ÖÐÿ´ÎÊä³öµ±Ç°µÄ×ÖĸºÍÖµ¡£
£  È»¶øÒª×¢ÒâµÄÊÇ£¬Ê¹ÓÃmy¶¨ÒåµÄ¾ÖÓò±äÁ¿ÒªÇó¸ñʽ¶¨ÒåÔÚ×Ó³ÌÐòÄÚ²¿£¬·ñÔò¾Í²»»áÊä³ö£¬Òò´Ë£¬ÓÃwriteÊä³öµÄ¾ÖÓò±äÁ¿Ò»¶¨ÒªÓÃlocal¶¨Òå¡££¨localºÍmyÏê¼û¡¶×Ó³ÌÐò¡·Ò»Õ£©
£  ×¢£ºPerl4ÖÐûÓÐmyº¯Êý£¬¹Ê²»»áÓдËÎÊÌâ¡£
3¡¢Ñ¡ÔñÖµÓò¸ñʽ
£  ÎÒÃÇÒѾ­ÖªµÀÁË´òÓ¡¸ñʽºÍwriteº¯ÊýÔõô¹¤×÷£¬ÏÖÔÚÀ´¿´¿´ÖµÓòµÄ¸ñʽ£¬¼ûÏÂ±í£º

¸ñʽֵÓòº¬Òå
@<<<×ó¶ÔÆëÊä³ö
@>>>ÓÒ¶ÔÆëÊä³ö
@|||ÖÐ¶ÔÆëÊä³ö
@##.##£  ¹Ì¶¨¾«¶ÈÊý×Ö£ 
@*¶àÐÐÎı¾

£  ÿ¸öÖµÓòµÄµÚÒ»¸ö×Ö·ûÊÇÐÐÌî³ä·û£¬µ±Ê¹ÓÃ@×Ö·ûʱ£¬²»×öÎı¾¸ñʽ»¯¡£¶ÔÎı¾µÄ¸ñʽ»¯ÉÔºóÀ´½²¡£
£  ÔÚÉϱíÖУ¬³ýÁ˶àÐÐÖµÓò@*£¬Óò¿í¶¼µÈÓÚÆäÖ¸¶¨µÄ°üº¬×Ö·û@ÔÚÄÚµÄ×Ö·û¸öÊý£¬ÀýÈ磺
£ £ @###.##
£  ±íʾÆß¸ö×Ö·û¿í£¬Ð¡ÊýµãǰËĸö£¬Ð¡ÊýµãºóÁ½¸ö¡£
4¡¢Êä³öÖµÓò×Ö·û
£  ÔÚ´òÓ¡¸ñʽÀï£¬ÌØ¶¨×Ö·ûÈç@¡¢<ºÍ>±»¿´×÷ÖµÓò¶¨Ò壬ÄÇôÈçºÎ½«ËüÃÇÊä³öÄØ£¿·½·¨ÈçÏ£º

format SPECIAL =
This line contains the special character @.
"@"
.
ËÄ¡¢Êä³öµ½ÆäËüÎļþ
£  ȱʡµØ£¬º¯Êýwrite½«½á¹ûÊä³öµ½±ê×¼Êä³öÎļþSTDOUT£¬ÎÒÃÇÒ²¿ÉÒÔʹËü½«½á¹ûÊä³öµ½ÈÎÒâÆäËüµÄÎļþÖС£×î¼òµ¥µÄ·½·¨¾ÍÊǰÑÎļþ±äÁ¿×÷Ϊ²ÎÊý´«µÝ¸øwrite£¬È磺
£ £ write (MYFILE);
£  ÕâÑù£¬write¾ÍÓÃȱʡµÄÃûΪMYFILEµÄ´òÓ¡¸ñʽÊä³öµ½ÎļþMYFILEÖУ¬µ«ÊÇÕâÑù¾Í²»ÄÜÓÃ$~±äÁ¿À´¸Ä±äËùʹÓõĴòÓ¡¸ñʽ¡£ÏµÍ³±äÁ¿$~Ö»¶ÔȱʡÎļþ±äÁ¿Æð×÷Óã¬ÎÒÃÇ¿ÉÒԸıäȱʡÎļþ±äÁ¿£¬¸Ä±ä$~£¬ÔÙµ÷ÓÃwrite£¬ÀýÈ磺
£ £ select (MYFILE);
£ £ $~ = "MYFORMAT";
£ £ write;
£  µ±select¸Ä±äȱʡÎļþ±äÁ¿Ê±£¬Ëü·µ»Øµ±Ç°È±Ê¡Îļþ±äÁ¿µÄÄÚ²¿±íʾ£¬ÕâÑùÎÒÃǾͿÉÒÔ´´½¨×Ó³ÌÐò£¬°´×Ô¼ºµÄÏë·¨Êä³ö£¬ÓÖ²»Ó°Ïì³ÌÐòµÄÆäËü²¿·Ö£¬ÈçÏ£º

sub write_to_stdout {
  local ($savefile, $saveformat);
  $savefile = select(STDOUT);
  $saveformat = $~;
  $~ = "MYFORMAT";
  write;
  $~ = $saveformat;
  select($savefile);
}
Îå¡¢·ÖÒ³
£  ÔÚÊä³öµ½´òÓ¡»úʱ£¬¿ÉÒÔÔÚÿҳ¶¥²¿Êä³öÏàÓ¦µÄÐÅÏ¢£¬ÕâÑùµÄÌØÊâÎı¾½Ðҳü¡£¶¨Òåҳüʵ¼ÊÉϾÍÊǶ¨ÒåÃûΪfilename_TOPµÄ´òÓ¡¸ñʽ£¬ÀýÈç¸ø±ê×¼Êä³öÎļþ¶¨ÒåҳüÈçÏ£º
£ £ format STDOUT_TOP =
£ £ Consolidated Widgets Inc. 1994 Annual Report
£ £ .
£  ÔÚҳüµÄ¶¨ÒåÖÐÒ²¿ÉÒÔ°üº¬ÖµÓò£¬Ò³Ã¼Öо­³£Ê¹ÓõÄÒ»¸öÌØÊâÖµÊǵ±Ç°Ò³Â룬´æÖüÔÚϵͳ±äÁ¿$%ÖУ¬È磺
£ £ format STDOUT_TOP =
£ £ Page @<<.
£ £ $%
£ £ .
£  ÎÒÃÇÒ²¿ÉÒÔͨ¹ý¸Ä±äϵͳ±äÁ¿$^¸Ä±ä¶¨ÒåҳüµÄ´òÓ¡¸ñʽÃû£¬Óë$~Ò»Ñù£¬$^Ö»¶Ôµ±Ç°È±Ê¡ÎļþÆð×÷Óã¬Òò´Ë¿ÉÒÔÓëselectº¯Êý½áºÏʹÓá£
£  ȱʡÇé¿öÏ£¬Ã¿Ò³³¤¶ÈΪ60ÐУ¬¿ÉÒÔͨ¹ý¸Ä±ä$=À´¸Ä±äÒ³³¤£¬È磺
£ £ $= = 66; #Ò³³¤ÉèΪ66ÐÐ
£  ´Ë¸³ÖµÓï¾ä±ØÐë³öÏÖÔÚµÚÒ»¸öwriteÓï¾äǰ¡£
£  ×¢£ºÒ»°ãʹÓ÷ÖÒ³»úÖÆÊ±²»ÓÃprintº¯Êý£¬ÒòΪµ±ÓÃwriteÊä³öʱ£¬Perl½âÊÍÆ÷¸ú×ÙÿҳµÄµ±Ç°Ðкš£Èç¹û±ØÐëʹÓÃprint¶øÓÖ²»´òÂÒÒ³¼ÆÊý£¬¿ÉÒÔµ÷Õûϵͳ±äÁ¿$-¡£$-µÄº¬ÒåÊǵ±Ç°Ðе½Ò³Ä©Ö®¼äµÄÐÐÊý£¬µ±$-´ïµ½Áãʱ£¬¾Í¿ªÊ¼ÐµÄÒ»Ò³£¬µ÷Õû·½·¨È磺
£ £ print ("Here is a line of output\n");
£ £ $- -= 1;
Áù¡¢¸ñʽ»¯³¤×Ö·û´®
£  ÎÒÃÇÒѾ­Ñ§¹ýÖµÓò@*¿ÉÒÔÊä³ö¶àÐÐÎı¾£¬µ«ËüÍêÈ«½«×Ö·û´®Ô­ÑùÊä³ö£¬²»¼ÓÒÔ¸ñʽ»¯¡£ÔÚPerlÖжԳ¤×Ö·û´®£¨°üº¬»»ÐУ©½øÐиñʽ»¯µÄÖµÓò¶¨ÒåºÜ¼òµ¥£¬Ö»Ðè°Ñ´òÍ·µÄ@×Ö·û»»³É^¾ÍÐÐÁË£¬ÕâÖÖÎı¾¸ñʽ»¯ÖУ¬Perl½âÊÍÆ÷ÔÚÒ»ÐÐÖзÅÖþ¡¿ÉÄܶàµÄµ¥´Ê¡£Ã¿µ±Êä³öÒ»ÐÐÎı¾£¬±»Êä³öµÄ×Ó´®¾Í´Ó±äÁ¿ÖÐɾ³ý£¬ÔÙ´ÎÔÚÓòÖµÖÐʹÓøñäÁ¿¾Í°ÑʣϵÄ×Ö·û´®¼ÌÐø°´¸ñʽÊä³ö¡£µ±ÄÚÈÝÒÑÊä³öÍê±Ï£¬¸Ã±äÁ¿¾Í³ÉÁ˿մ®£¬ÔÙÊä³ö¾Í»áÊä³ö¿ÕÐУ¬Îª±ÜÃâÊä³ö¿ÕÐУ¬¿ÉÒÔÔÚÖµÓò¸ñʽÐÐÊ×¼ÓÒ»¸ö~×Ö·û¡£¼ûÏÂÀý£º

1 : #!/usr/local/bin/perl
2 :
3 : @quotation = ;
4 : $quotation = join("", @quotation);
5 : $~ = "QUOTATION";
6 : write;
7 :
8 : format QUOTATION =
9 : Quotation for the day:
10: -----------------------------
11: ~£ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
12: $quotation
13: ~£ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
14: $quotation
15: ~£ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
16: $quotation
17: -----------------------------
18: .
£  ÔËÐнá¹ûÈçÏ£º

$ program
Any sufficiently advanced programming
language is indistinguishable from magic.
^D
Quotation for the day:
-----------------------------
£ Any sufficiently advanced programming language is
£ indistinguishable from magic.
-----------------------------
$
£  Èç¹û°Ñ´òÓ¡¸ñʽÖÐÐÐÊ×µÄ~×Ö·ûÈ¥µô£¬ÉÏÃæµÄÊä³ö½á¹ûÖоͻá¶àÒ»ÐпÕÐС£ºÜÃ÷ÏÔ£¬µ±×Ö·û´®³¤¶È²»Ã÷ȷʱ£¬ÕâÖÖÓ÷¨ºÜ²»·½±ã£¬Ô­Òò¾ÍÔÚÓÚËüÖ¸Ã÷ÁËÊä³öµÄÐÐÊýÉÏÏÞ£¬³¬¹ýÕâÒ»ÉÏÏÞµÄ×Ö·û¾Í²»»á±»Êä³ö£¬½â¾ö·½·¨ºÜ¼òµ¥£¬¾ÍÊÇÔÚÓòÖµ¸ñʽÐÐÊ×¼ÓÁ½¸ö~×Ö·û£¬ÕâÑù¾Í»á³ÖÐø°´¸ñʽÊä³öÎı¾Ö±µ½Êä³öÍê±Ï£¬Óô˷½·¨°ÑÉÏÊö³ÌÐò¸ÄдÈçÏ£º

1 : #!/usr/local/bin/perl
2 :
3 : @quotation = ;
4 : $quotation = join("", @quotation);
5 : $~ = "QUOTATION";
6 : write;
7 :
8 : format QUOTATION =
9 : Quotation for the day:
10: -----------------------------
11: ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
12: $quotation
13: -----------------------------
14: .
£  ÕâÑùÔËÐнá¹ûÏàͬ¡£
Æß¡¢ÓÃprintf¸ñʽ»¯Êä³ö
£  »¹ÓÐÒ»ÖÖÈÝÒ×ÕÆÎÕºÍʹÓõĸñʽ»¯Êä³öº¯Êý£¬ÄǾÍÊÇprintf£¬ËüÓëCÓïÑÔÖеÄprintf»ù±¾ÉÏÊÇÏàͬµÄ¡£printfÓÐÁ½¸ö²ÎÊý£¬Ò»¸öÊÇ×Ö·û´®£¬ÆäÖк¬ÓÐÒ»¸ö»ò¶à¸öÓòÖµÐÎʽ£¬ÁíÒ»¸öÊÇÓë¸÷ÓòÖµÏà¶ÔÓ¦µÄ±äÁ¿Öµ°´Ò»¶¨¸ñÊ½Ìæ»»£¬È磺
£ £ printf("The number I want to print is %d.\n", $number);
£  ¸÷ÖÖÓòÖµÐÎʽÈçÏÂ±í£º

ÓòÖµ£  º¬Òå
%cµ¥¸ö×Ö·û
%dÊ®½øÖÆÕûÊý
%e¿ÆÑ§¼ÆÊý·¨ÐÎʽµÄ¸¡µãÊý£ 
%fÆÕͨÐÎʽ£¨¶¨µã£©¸¡µãÊý
%g½ôËõÐÎʽ¸¡µãÊý
%o°Ë½øÖÆÕûÊý
%s×Ö·û´®
%uÎÞ·ûºÅÕûÊý
%xÊ®Áù½øÖÆÕûÊý

£  һЩʹÓÃϸ½ÚÈçÏ£º

1¡¢ÔÚ¸ñʽd¡¢o¡¢u»òxÖУ¬Èç¹ûÕûÊýÖµ½Ï´ó»ò¿ÉÄܽϴ󣬿ɼӸöl×Ö·û£¬ÒâΪ³¤ÕûÐÍ£¬Èç%ld¡£
2¡¢%×Ö·ûºó¼ÓÕýÕûÊý±íʾ¸ÃÓòµÄ×îС¿í¶È£¬Èç¹ûÊä³ö½á¹û¿í¶È²»×㣬ÔòÏòÓÒ¶ÔÆë£¬Ç°ÃæÓÿոñ²¹×㣬Èç¹û¸ÃÕýÕûÊýÒÔÊý×Ö0´òÍ·£¬Ôò²¹×ã×Ö·ûΪ0¡£Èô%×Ö·ûºóΪ¸ºÕûÊý£¬Ôò½á¹ûÏòÓÒ¶ÔÆë¡£
3¡¢¸¡µãÊýÓòÖµ(%c¡¢%fºÍ%g)ÖпÉÒÔÖ¸¶¨Ð¡ÊýµãǰºóµÄ¿í¶È£¬Èç%8.3fÒâΪ×Ü¿í¶ÈΪ8¸ö×Ö·û£¬Ð¡Êýµãºó£¨¼´Ð¡Êý²¿·Ö£©Îª3¸ö×Ö·û£¬¶à³öµÄСÊý²¿·ÖËÄÉáÎåÈë¡£
4¡¢ÔÚÕûÊý¡¢×Ö·û»ò×Ö·û´®µÄÖµÓòÖÐʹÓÃÈçÉϵÄСÊýÐÎʽn.m£¬ÕûÊý²¿·ÖnΪ×Ü¿í¶È£¬Ð¡Êý²¿·ÖmΪÊä³ö½á¹ûµÄ×î´ó¿í¶È£¬ÕâÑù¾Í±£Ö¤ÁËÊä³ö½á¹ûǰÖÁÉÙÓÐn-m¸ö¿Õ¸ñ¡£
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
5Â¥2005-06-14 19:17:42
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

¡ï
yuefour(½ð±Ò+1):ÐÁ¿àÁË
µÚʮһÕ£ Îļþϵͳ
£  ±¾ÕÂËù½²µÄº¯Êý¶àÊýʹÓÃÁËUNIX²Ù×÷ϵͳµÄÌØÐÔ£¬ÔÚ·ÇUNIXϵͳÖУ¬Ò»Ð©º¯Êý¿ÉÄÜûÓж¨Òå»òÓв»Í¬µÄ¹¤×÷·½Ê½£¬Ê¹ÓÃʱÇë²é¿´PerlÁª»úÎĵµ¡£
Ò»¡¢ÎļþÊäÈë/Êä³öº¯Êý
£  ±¾½Ú½²Êö´ÓÎļþÖжÁÈ¡ÐÅÏ¢ºÍÏòÎļþдÈëÐÅÏ¢µÄÄÚÖÿ⺯Êý¡£
1¡¢»ù±¾I/Oº¯Êý
£  һЩI/Oº¯ÊýÔÚÇ°ÃæµÄÕ½ÚÖÐÒÑÓн²Êö£¬Èç

open£ºÔÊÐí³ÌÐò·ÃÎÊÎļþ
close£ºÖÕÖ¹Îļþ·ÃÎÊ
print£ºÎļþдÈë×Ö·û´®
write£ºÏòÎļþдÈë¸ñʽ»¯ÐÅÏ¢
printf£º¸ñʽ»¯×Ö·û´®²¢Êä³öµ½Îļþ
£  ÕâÀï¼òµ¥»Ø¹Ëһϣ¬ÔÙ½²Ò»Ð©Ç°ÃæÎ´Ìáµ½µÄº¯Êý¡£
1)openº¯Êý
£  openº¯Êý½«Îļþ±äÁ¿ÓëijÎļþÁªÏµÆðÀ´£¬Ìṩ·ÃÎÊÎļþµÄ½Ó¿Ú£¬ÀýÈ磺open(MYVAR, "/u/file"); Èç¹ûÎļþ´ò¿ª³É¹¦£¬Ôò·µ»Ø·ÇÁãÖµ£¬·ñÔò·µ»ØÁ㡣ȱʡµØ£¬open´ò¿ªÎļþÓÃÒÔ¶ÁÈ¡ÆäÄÚÈÝ£¬ÈôÏë´ò¿ªÎļþÒÔдÈëÄÚÈÝ£¬ÔòÔÚÎļþÃûǰ¼Ó¸ö´óÓںţºopen(MYVAR, ">/u/file"); ÏòÒÑÓеÄÎļþĩβÌí¼ÓÄÚÈÝÓÃÁ½¸ö´óÓںţºopen(MYVAR, ">>/u/file"); ÈôÏë´ò¿ªÎļþ×÷ΪÊý¾Ýµ¼ÏòµÄÃüÁÔòÔÚÃüÁîǰ¼ÓÉϹܵÀ·û(|)£ºopen(MAIL, "|mail dave");
2)ÓÃopenÖØ¶¨ÏòÊäÈë
£  ¿ÉÒÔ°Ñ´ò¿ªµÄÎļþ¾ä±úÓÃ×÷Ïò³ÌÐòÊäÈëÊý¾ÝµÄÃüÁ·½·¨ÊÇÔÚÃüÁîºó¼Ó¹ÜµÀ·û(|)£¬È磺
£  open(CAT, "cat file*|");
£  ¶ÔopenµÄµ÷ÓÃÔËÐÐÃüÁîcat file* £¬´ËÃüÁî´´½¨Ò»¸öÁÙʱÎļþ£¬Õâ¸öÎļþµÄÄÚÈÝÊÇËùÓÐÒÔfile´òÍ·µÄÎļþµÄÄÚÈÝÁ¬½Ó¶ø³É£¬´ËÎļþ¿´×÷ÊäÈëÎļþ£¬¿ÉÓÃÎļþ±äÁ¿CAT·ÃÎÊ£¬È磺
£  $input = ;
£  ÏÂÃæµÄÀý×ÓʹÓÃÃüÁîwµÄÊä³öÀ´Áгöµ±Ç°µÇ¼µÄËùÓÐÓû§Ãû¡£

1 : #!/usr/local/bin/perl
2 :
3 : open (WOUT, "w|");
4 : $time = ;
5 : $time =~ s/^ *//;
6 : $time =~ s/ .*//;
7 : ; # skip headings line
8 : @users = ;
9 : close (WOUT);
10: foreach $user (@users) {
11:£  $user =~ s/ .*//;
12: }
13: print ("Current time: $time");
14: print ("Users logged on:\n");
15: $prevuser = "";
16: foreach $user (sort @users) {
17:£  if ($user ne $prevuser) {
18:£ £  print ("\t$user");
19:£ £  $prevuser = $user;
20:£  }
21: }
£  ½á¹ûÊä³öÈçÏ£º

Current time: 4:25pm
Users logged on:
  dave
  kilroy
  root
  zarquon
£  wÃüÁîÁгöµ±Ç°Ê±¼ä¡¢ÏµÍ³¸ºÔغ͵ǼµÄÓû§£¬ÒÔ¼°Ã¿¸öÓû§µÄ×÷ҵʱ¼äºÍµ±Ç°ÔËÐеÄÃüÁÈ磺

  4:25pm£ up 1 day,£ 6:37,£ 6 users,£ load average: 0.79, 0.36, 0.28
User£ £  tty£ £ £  login@£ idle£  JCPU£  PCPU what
dave£ £  ttyp0£ £  2:26pm£ £ £ £ £  27£ £ £ 3 w
kilroy£  ttyp1£ £  9:01am£ 2:27£  1:04£ £  11 -csh
kilroy£  ttyp2£ £  9:02am£ £ 43£  1:46£ £  27 rn
root£ £  ttyp3£ £  4:22pm£ £  2£ £ £ £ £ £ £  -csh
zarquon£ ttyp4£ £  1:26pm£ £  4£ £  43£ £  16 cc myprog.c
kilroy£  ttyp5£ £  9:03am£ £ £ £  2:14£ £  48 /usr/games/hack

£  ÉÏÀýÖдÓwÃüÁîµÄÊä³öÖÐÈ¡³öËùÐèµÄÐÅÏ¢£ºµ±Ç°Ê±¼äºÍµÇ¼µÄÓû§Ãû¡£µÚ3ÐÐÔËÐÐwÃüÁ´Ë´¦¶ÔopenµÄµ÷ÓÃÖ¸¶¨wµÄÊä³öÓÃ×÷³ÌÐòµÄÊäÈ룬ÓÃÎļþ±äÁ¿WOUTÀ´·ÃÎʸÃÊäÈë¡£µÚ4ÐжÁÈ¡µÚÒ»ÐÐÐÅÏ¢£¬¼´£º
£  4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28
£  ½ÓÏÂÀ´µÄÁ½ÐдÓÕâÐÐÖгéÈ¡³öʱ¼ä¡£Ê×ÏÈ£¬µÚ5ÐÐɾ³ýÆðʼµÄ¿Õ¸ñ£¬È»ºóµÚ6ÐÐɾȥ³ýʱ¼äºÍ½áβ»»ÐзûÖ®¼äµÄËùÓÐ×Ö·û£¬´æÈë±äÁ¿$time¡£
£  µÚ7ÐдÓWOUT¶ÁÈ¡µÚ¶þÐУ¬ÕâÐÐÖÐÎÞÓÐÓÃÐÅÏ¢£¬¹Ê²»×÷´¦Àí¡£µÚ8ÐаÑʣϵÄÐи³¸øÊý×é@users£¬È»ºóµÚ9ÐйرÕWOUT£¬ÖÕÖ¹ÔËÐÐwÃüÁîµÄ½ø³Ì¡£
£  @usersÖеÄÿ¸öÔªËØ¶¼ÊÇÒ»ÐÐÓû§ÐÅÏ¢£¬ÒòΪ±¾³ÌÐòÖ»ÐèҪÿÐеĵÚÒ»¸öµ¥´Ê£¬¼´Óû§Ãû£¬¹Ê10~12ÐÐÈ¥µô³ý»»ÐзûÍâµÄÆäËü×Ö·û£¬Õâһѭ»·½áÊøºó£¬@usersÖÐֻʣÏÂÓû§ÃûµÄÁÐ±í¡£
£  µÚ13ÐÐÊä³ö´æÖüÔÚ$timeÖеÄʱ¼ä£¬×¢ÒâÕâʱprint²»ÐèÒª¼ÓÉÏ»»Ðзû£¬ÒòΪ$timeÖÐÓС£16~21ÐжÔ@usersÖеÄÓû§ÃûÅÅÐò²¢Êä³ö¡£ÒòΪͬһ¸öÓû§¿ÉÒÔ¶à´ÎµÇ¼£¬ËùÒÔÓÃ$preuser´æÖüÊä³öµÄ×îºóÒ»¸öÓû§Ãû£¬Ï´ÎÊä³öÊý×éÔªËØ$userʱ£¬Èç¹ûÆäÓë$preserÏàµÈ£¬Ôò²»Êä³ö¡£
3)ÎļþÖØ¶¨Ïò
£  Ðí¶àUNIX shell¿ÉÒ԰ѱê×¼Êä³öÎļþ(STDOUT)ºÍ±ê×¼´íÎóÎļþ(STDERR)¶¼Öض¨Ïòµ½Í¬Ò»¸öÎļþ£¬ÀýÈçÔÚBourne Shell£¨sh£©ÖУ¬ÃüÁî
£  $ foo > file1 2>&1
£  ÔËÐÐÃüÁîfoo²¢°ÑÊä³öµ½±ê×¼Êä³öÎļþºÍ±ê×¼´íÎóÎļþµÄÄÚÈÝ´æÖüµ½Îļþfile1ÖС£ÏÂÃæÊÇÓÃPerlʵÏÖÕâÒ»¹¦ÄܵÄÀý×Ó£º

1: #!/usr/local/bin/perl
2:
3: open (STDOUT, ">file1") || die ("open STDOUT failed");
4: open (STDERR, ">&STDOUT") || die ("open STDERR failed");
5: print STDOUT ("line 1\n");
6: print STDERR ("line 2\n");
7: close (STDOUT);
8: close (STDERR);
£  ÔËÐкó£¬Îļþfile1ÖеÄÄÚÈÝΪ£º
£ £ line 2
£ £ line 1
£  ¿ÉÒÔ¿´µ½£¬ÕâÁ½Ðв¢Î´°´ÎÒÃÇÏëÏóµÄ˳Ðò´æÖü£¬ÎªÊ²Ã´ÄØ£¿ÎÒÃÇÀ´·ÖÎöÒ»ÏÂÕâ¶Î³ÌÐò¡£
£  µÚ3ÐÐÖØ¶¨Ïò±ê×¼Êä³öÎļþ£¬·½·¨ÊÇ´ò¿ªÎļþfile1½«ËüÓëÎļþ±äÁ¿STDOUT¹ØÁª£¬ÕâÒ²¹Ø±ÕÁ˱ê×¼Êä³öÎļþ¡£µÚ4ÐÐÖØ¶¨Ïò±ê×¼´íÎóÎļþ£¬²ÎÊý>&STDOUT¸æËßPerl½âÊÍÆ÷ʹÓÃÒÑ´ò¿ª²¢ÓëSTDOUT¹ØÁªµÄÎļþ£¬¼´Îļþ±äÁ¿STDERRÖ¸ÏòÓëSTDOUTÏàͬµÄÎļþ¡£µÚ5¡¢6ÐзֱðÏòSTDOUTºÍSTDERRдÈëÊý¾Ý£¬ÒòΪÕâÁ½¸öÎļþ±äÁ¿Ö¸Ïòͬһ¸öÎļþ£¬¹ÊÁ½ÐÐ×Ö·û´®¾ùдµ½Îļþfile1ÖУ¬µ«Ë³ÐòÈ´ÊÇ´íÎóµÄ£¬Ôõô»ØÊÂÄØ£¿
£  ÎÊÌâÔÚÓÚUNIX¶ÔÊä³öµÄ´¦ÀíÉÏ¡£µ±Ê¹ÓÃprint£¨»òÆäËüº¯Êý£©Ð´ÈëSTDOUTµÈÎļþʱ£¬UNIX²Ù×÷ÏµÍ³ÕæÕýËù×öµÄÊǰÑÊý¾Ý¿½±´µ½Ò»Æ¬ÌØÊâµÄÄÚ´æ¼´»º³åÇøÖУ¬½ÓÏÂÀ´µÄÊä³ö²Ù×÷¼ÌÐøÐ´È뻺³åÇøÖ±µ½Ð´Âú£¬µ±»º³åÇøÂúÁË£¬¾Í°ÑÈ«²¿Êý¾Ýʵ¼ÊÊä³ö¡£ÏóÕâÑùÏÈдÈ뻺³åÇøÔÙ°ÑÕû¸ö»º³åÇøµÄÄÚÈÝÊä³ö±Èÿ´Î¶¼Êµ¼ÊÊä³öËù»¨·ÑµÄʱ¼äÒªÉٵö࣬ÒòΪһ°ãÀ´Ëµ£¬I/O±ÈÄÚ´æ²Ù×÷ÂýµÃ¶à¡£
£  ³ÌÐò½áÊøÊ±£¬ÈκηǿյĻº³åÇø¶¼±»Êä³ö£¬È»¶ø£¬ÏµÍ³ÎªSTDOUTºÍSTDERR·Ö±ðά»¤Ò»Æ¬»º³åÇø£¬²¢ÇÒÏÈÊä³öSTDERRµÄÄÚÈÝ£¬Òò´Ë´æÖüÔÚSTDERRµÄ»º³åÇøÖеÄÄÚÈÝline 2³öÏÖÔÚ´æÖüÔÚSTDOUTµÄ»º³åÇøÖеÄÄÚÈÝline 1֮ǰ¡£
£  ΪÁ˽â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔ¸æËßPerl½âÊÍÆ÷²»¶ÔÎļþʹÓûº³å£¬·½·¨Îª£º
£ £ 1¡¢ÓÃselectº¯ÊýÑ¡ÔñÎļþ
£ £ 2¡¢°ÑÖµ1¸³¸øÏµÍ³±äÁ¿$|
£  ϵͳ±äÁ¿$|Ö¸¶¨ÎļþÊÇ·ñ½øÐлº³å¶ø²»¹ÜÆäÊÇ·ñÓ¦¸ÃʹÓûº³å¡£Èç¹û$|Ϊ·ÇÁãÖµÔò²»Ê¹Óûº³å¡£$|Óëϵͳ±äÁ¿$~ºÍ$^Эͬ¹¤×÷£¬µ±Î´µ÷ÓÃselectº¯Êýʱ£¬$|Ó°Ï쵱ǰȱʡÎļþ¡£ÏÂÀý±£Ö¤ÁËÊä³öµÄ´ÎÐò£º

1 : #!/usr/local/bin/perl
2 :
3 : open (STDOUT, ">file1") || die ("open STDOUT failed");
4 : open (STDERR, ">&STDOUT") || die ("open STDERR failed");
5 : $| = 1;
6 : select (STDERR);
7 : $| = 1;
8 : print STDOUT ("line 1\n");
9 : print STDERR ("line 2\n");
10: close (STDOUT);
11: close (STDERR);
£  ³ÌÐòÔËÐкó£¬Îļþfile1ÖÐÄÚÈÝΪ£º
£ £ line 1
£ £ line 2
£  µÚ5Ðн«$|¸³³É1£¬¸æËßPerl½âÊÍÆ÷µ±Ç°È±Ê¡Îļþ²»½øÐлº³å£¬ÒòΪδµ÷ÓÃselect£¬µ±Ç°µÄȱʡÎļþÎªÖØ¶¨Ïòµ½Îļþfile1µÄSTDOUT¡£µÚ6Ðн«µ±Ç°È±Ê¡ÎļþÉèΪSTDERR£¬µÚ7ÐÐÓÖÉèÖÃ$|Ϊ1£¬¹ØµôÁËÖØ¶¨Ïòµ½file1µÄ±ê×¼´íÎóÎļþµÄ»º³å¡£ÓÉÓÚSTDOUTºÍSTDERRµÄ»º³å¾ù±»¹Øµô£¬ÏòÆäµÄÊä³öÁ¢¿Ì±»Ð´µ½ÎļþÖУ¬Òò´Ëline 1³öÏÖÔÚµÚÒ»ÐС£
4)Ö¸¶¨¶ÁдȨÏÞ
£  ´ò¿ªÒ»¸ö¼È¿É¶ÁÓÖ¿ÉдµÄÎļþ·½·¨ÊÇÔÚÎļþÃûǰ¼ÓÉÏ"+>"£¬ÈçÏ£º
£ £ open (READWRITE, "+>file1");
£  ´ËÓï¾ä´ò¿ª¼È¿É¶ÁÓÖ¿ÉдµÄÎļþfile1£¬¼´¿ÉÒÔÖØÐ´ÆäÖеÄÄÚÈÝ¡£Îļþ¶Áд²Ù×÷×îºÃÓë¿âº¯ÊýseekºÍtellÒ»ÆðʹÓã¬ÕâÑù¿ÉÒÔÌøµ½ÎļþÈκÎÒ»µã¡£
£  ×¢£ºÒ²¿ÉÓÃǰ׺"+<"Ö¸¶¨¿É¶ÁдȨÏÞ¡£
5)closeº¯Êý
£  ÓÃÓڹرմò¿ªµÄÎļþ¡£µ±ÓÃclose¹Ø±Õ¹ÜµÀ£¬¼´Öض¨ÏòµÄÃüÁîʱ£¬³ÌÐòµÈ´ýÖØ¶¨ÏòµÄÃüÁî½áÊø£¬È磺
£ £ open (MYPIPE, "cat file*|");
£ £ close (MYPIPE);
£  µ±¹Ø±Õ´ËÎļþ±äÁ¿Ê±£¬³ÌÐòÔÝÍ£ÔËÐУ¬Ö±µ½ÃüÁîcat file*ÔËÐÐÍê±Ï¡£
6)print, printfºÍwriteº¯Êý
£  printÊÇÕâÈý¸öº¯ÊýÖÐ×î¼òµ¥µÄ£¬ËüÏòÖ¸¶¨µÄÎļþÊä³ö£¬Èç¹ûδָ¶¨£¬ÔòÊä³öµ½µ±Ç°È±Ê¡ÎļþÖУ¬È磺
£ £ print ("Hello, there!\n");
£ £ print OUTFILE ("Hello, there!\n");
£  µÚÒ»¾äÊä³öµ½µ±Ç°È±Ê¡ÎļþÖУ¬Èôδµ÷ÓÃselect£¬ÔòΪSTDOUT¡£µÚ¶þ¾äÊä³öµ½ÓÉÎļþ±äÁ¿OUTFILEÖ¸¶¨µÄÎļþÖС£
£  printfº¯ÊýÏȸñʽ»¯×Ö·û´®ÔÙÊä³öµ½Ö¸¶¨Îļþ»òµ±Ç°È±Ê¡ÎļþÖУ¬È磺
£ £ printf OUTFILE (¡°You owe me %8.2f", $owing);
£  ´ËÓï¾äÈ¡³ö±äÁ¿$owingµÄÖµ²¢Ìæ»»µô´®ÖеÄ%8.2f£¬%8.2fÊÇÓò¸ñʽµÄÀý×Ó£¬°Ñ$owingµÄÖµ¿´×÷¸¡µãÊý¡£
£  writeº¯ÊýʹÓÃÊä³ö¸ñʽ°ÑÐÅÏ¢Êä³öµ½ÎļþÖУ¬È磺
£ £ select (OUTFILE);
£ £ $~ = "MYFORMAT";
£ £ write;
£  ¹ØÓÚprintfºÍwrite£¬Ïê¼û¡¶µÚxÕ ¸ñʽ»¯Êä³ö¡·¡£
7)selectº¯Êý
£  selectº¯Êý½«Í¨¹ý²ÎÊý´«µÝµÄÎļþ±äÁ¿Ö¸¶¨ÎªÐµĵ±Ç°È±Ê¡Îļþ£¬È磺
£ £ select (MYFILE);
£  ÕâÑù£¬MYFILE¾Í³ÉÁ˵±Ç°È±Ê¡Îļþ£¬µ±¶Ôprint¡¢writeºÍprintfµÄµ÷ÓÃδָ¶¨Îļþʱ£¬¾ÍÊä³öµ½MYFILEÖС£
8)eofº¯Êý
£  eofº¯Êý²é¿´×îºóÒ»´Î¶ÁÎļþ²Ù×÷ÊÇ·ñΪÎļþ×îºóÒ»¸ö¼Ç¼£¬Èç¹ûÊÇ£¬Ôò·µ»Ø·ÇÁãÖµ£¬Èç¹ûÎļþ»¹ÓÐÄÚÈÝ£¬·µ»ØÁã¡£
£  Ò»°ãÇé¿öÏ£¬¶ÔeofµÄµ÷Óò»¼ÓÀ¨ºÅ£¬ÒòΪeofºÍeof()ÊǵÈЧµÄ£¬µ«Óë<>²Ù×÷·ûÒ»ÆðʹÓÃʱ£¬eofºÍeof()¾Í²»Í¬ÁË¡£ÏÖÔÚÎÒÃÇÀ´´´½¨Á½¸öÎļþ£¬·Ö±ð½Ð×öfile1ºÍfile2¡£file1µÄÄÚÈÝΪ£º
£ £ This is a line from the first file.
£ £ Here is the last line of the first file.
£  file2µÄÄÚÈÝΪ£º
£ £ This is a line from the second and last file.
£ £ Here is the last line of the last file.
£  ÏÂÃæ¾ÍÀ´¿´Ò»ÏÂeofºÍeof()µÄÇø±ð£¬µÚÒ»¸ö³ÌÐòΪ£º

1: #!/usr/local/bin/perl
2:
3: while ($line = <>) {
4:£  print ($line);
5:£  if (eof) {
6:£ £  print ("-- end of current file --\n");
7:£  }
8: }
£  ÔËÐнá¹ûÈçÏ£º

$ program file1 file2
This is a line from the first file.
Here is the last line of the first file.
-- end of current file --
This is a line from the second and last file.
Here is the last line of the last file.
-- end of current file --
$
£  ÏÂÃæ°Ñeof¸ÄΪeof()£¬µÚ¶þ¸ö³ÌÐòΪ£º

1: #!/usr/local/bin/perl
2:
3: while ($line = <>) {
4:£  print ($line);
5:£  if (eof()) {
6:£ £  print ("-- end of output --\n");
7:£  }
8: }
£  ÔËÐнá¹ûÈçÏ£º

$ program file1 file2
This is a line from the first file.
Here is the last line of the first file.
This is a line from the second and last file.
Here is the last line of the last file.
-- end of output --$
£  Õâʱ£¬Ö»ÓÐËùÓÐÎļþ¶¼¶Á¹ýÁË£¬eof()²Å·µ»ØÕ棬Èç¹ûÖ»ÊǶà¸öÎļþÖÐǰ¼¸¸öµÄĩ⣬·µ»ØÖµÎª¼Ù£¬ÒòΪ»¹ÓÐÒª¶ÁÈ¡µÄÊäÈë¡£
9)¼ä½ÓÎļþ±äÁ¿
£  ¶ÔÓÚÉÏÊö¸÷º¯Êýopen, close, print, printf, write, selectºÍeof£¬¶¼¿ÉÒÔÓüòµ¥±äÁ¿À´´úÌæÎļþ±äÁ¿£¬Õâʱ£¬¼òµ¥±äÁ¿ÖÐËù´æÖüµÄ×Ö·û´®¾Í±»¿´×÷Îļþ±äÁ¿Ãû£¬ÏÂÃæ¾ÍÊÇÕâÑùÒ»¸öÀý×Ó£¬´ËÀýºÜ¼òµ¥£¬¾Í²»½âÊÍÁË¡£ÐèÒªÖ¸³öµÄÊÇ£¬º¯Êýopen, close, write, selectºÍeof»¹ÔÊÐíÓñí´ïʽÀ´Ìæ´úÎļþ±äÁ¿£¬±í´ïʽµÄÖµ±ØÐëÊÇ×Ö·û´®£¬±»ÓÃ×÷Îļþ±äÁ¿Ãû¡£

1: #!/usr/local/bin/perl
2:
3: &open_file("INFILE", "", "file1");
4: &open_file("OUTFILE", ">", "file2");
5: while ($line = &read_from_file("INFILE")) {
6:£  &print_to_file("OUTFILE", $line);
7: }
8:
9: sub open_file {
10:£  local ($filevar, $filemode, $filename) = @_;
11:
12:£  open ($filevar, $filemode . $filename) ||
13:£ £  die ("Can't open $filename");
14: }
15: sub read_from_file {
16:£  local ($filevar) = @_;
17:
18:£  <$filevar>;
19: }
20: sub print_to_file {
21:£  local ($filevar, $line) = @_;
22:
23:£  print $filevar ($line);
24: }
2¡¢Ìø¹ýºÍÖØ¶ÁÊý¾Ý

º¯ÊýÃûseek
µ÷ÓÃÓï·¨seek (filevar, distance, relative_to);
½â˵ÔÚÎļþÖÐÏòǰ/ºóÒÆ¶¯£¬ÓÐÈý¸ö²ÎÊý£º
1¡¢filevar£¬Îļþ±äÁ¿
2¡¢distance£¬Òƶ¯µÄ×Ö½ÚÊý£¬ÕýÊýÏòÇ°ÒÆ¶¯£¬¸ºÊýÍù»ØÒƶ¯
3¡¢reletive_to£¬Öµ¿ÉΪ0¡¢1»ò2¡£Îª0ʱ£¬´ÓÎļþÍ·¿ªÊ¼Òƶ¯£¬Îª1ʱ£¬Ïà¶ÔÓÚµ±Ç°Î»Ö㨽«Òª¶ÁµÄÏÂÒ»ÐУ©Òƶ¯£¬Îª2ʱ£¬Ïà¶ÔÓÚÎļþÄ©Î²ÒÆ¶¯¡£
ÔËÐгɹ¦·µ»ØÕ棨·ÇÁãÖµ£©£¬Ê§°ÜÔò·µ»ØÁ㣬³£Óëtellº¯ÊýºÏÓá£

º¯ÊýÃûtell
µ÷ÓÃÓï·¨tell (filevar);
½â˵·µ»Ø´ÓÎļþÍ·µ½µ±Ç°Î»ÖõľàÀë¡£
×¢Ò⣺
1¡¢seekºÍtell²»ÄÜÓÃÓÚÖ¸Ïò¹ÜµÀµÄÎļþ±äÁ¿¡£
2¡¢seekºÍtellÖÐÎļþ±äÁ¿²ÎÊý¿ÉʹÓñí´ïʽ¡£

3¡¢ÏµÍ³¶Áдº¯Êý

º¯ÊýÃûread
µ÷ÓÃÓï·¨read (filevar, result, length, skipval);
½â˵readº¯ÊýÉè¼ÆµÃÓëUNIXµÄfreadº¯ÊýµÈЧ£¬¿ÉÒÔ¶ÁÈ¡ÈÎÒⳤ¶ÈµÄ×Ö·û£¨×Ö½Ú£©´æÈëÒ»¸ö¼òµ¥±äÁ¿¡£Æä²ÎÊýÓÐËĸö£º
1¡¢filevar£ºÎļþ±äÁ¿
2¡¢result£º´æÖü½á¹ûµÄ¼òµ¥±äÁ¿£¨»òÊý×éÔªËØ£©
3¡¢length£º¶ÁÈ¡µÄ×Ö½ÚÊý
4¡¢skipval£º¿ÉÑ¡Ïָ¶¨¶ÁÎļþÖ®Ç°Ìø¹ýµÄ×Ö½ÚÊý¡£
·µ»ØÖµÎªÊµ¼Ê¶ÁÈ¡µÄ×Ö½ÚÊý£¬Èç¹ûÒѵ½ÁËÎļþĩ⣬Ôò·µ»ØÁ㣬Èç¹û³ö´í£¬Ôò·µ»Ø¿Õ´®¡£

º¯ÊýÃûsysread
µ÷ÓÃÓï·¨sysread (filevar, result, length, skipval);
½â˵¸ü¿ìµÄ¶ÁÈ¡Êý¾Ý£¬ÓëUNIXº¯ÊýreadµÈЧ£¬²ÎÊýÓëreadÏàͬ¡£

º¯ÊýÃûsyswrite
µ÷ÓÃÓï·¨syswrite (filevar, data, length, skipval);
½â˵¸ü¿ìµÄдÈëÊý¾Ý£¬ÓëUNIXº¯ÊýwriteµÈЧ£¬²ÎÊý£º
1¡¢filevar£º½«ÒªÐ´ÈëµÄÎļþ
2¡¢data£º´æÖüҪдÈëÊý¾ÝµÄ±äÁ¿
3¡¢length£ºÒªÐ´ÈëµÄ×Ö½ÚÊý
4¡¢skipvalд²Ù×÷Ö®Ç°Ìø¹ýµÄ×Ö½ÚÊý¡£

4¡¢ÓÃgetc¶ÁÈ¡×Ö·û

º¯ÊýÃûgetc
µ÷ÓÃÓï·¨$char = getc (infile);
½â˵´ÓÎļþÖжÁÈ¡µ¥¸ö×Ö·û¡£

5¡¢ÓÃbinmode¶ÁÈ¡¶þ½øÖÆÎļþ

º¯ÊýÃûbinmode
µ÷ÓÃÓï·¨binmode (filevar);
½â˵µ±ÄãµÄϵͳ£¨ÈçÀàDOSϵͳ£©¶ÔÎı¾ÎļþºÍ¶þ½øÖÆÎļþÓÐËùÇø±ðʱʹÓᣱØÐëÔÚ´ò¿ªÎļþºó¡¢¶ÁÈ¡ÎļþǰʹÓá£

¶þ¡¢Ä¿Â¼´¦Àíº¯Êý
º¯ÊýÃûmkdir
µ÷ÓÃÓï·¨mkdir (dirname, permissions);
½â˵´´½¨ÐÂĿ¼£¬²ÎÊýΪ£º
1¡¢dirname£º½«Òª´´½¨µÄĿ¼Ãû£¬¿ÉÒÔΪ×Ö·û´®»ò±í´ïʽ
2¡¢permissions£º8½øÖÆÊý£¬Ö¸¶¨Ä¿Â¼µÄ·ÃÎÊȨÏÞ£¬ÆäÖµºÍÒâÒå¼ûÏÂ±í£¬È¨ÏÞµÄ×éºÏ·½·¨Îª½«ÏàÓ¦µÄÖµÏà¼Ó¡£

ֵȨÏÞ
4000£  ÔËÐÐʱÉèÖÃÓû§ID£ 
2000ÔËÐÐʱÉèÖÃ×éID
1000Õ³Ìùλ
0400ÓµÓÐÕß¶ÁȨÏÞ
0200ÓµÓÐÕßдȨÏÞ
0100ÓµÓÐÕßÖ´ÐÐȨÏÞ
0040×é¶ÁȨÏÞ
0020×éдȨÏÞ
0010×éÖ´ÐÐȨÏÞ
0004ËùÓÐÈ˶ÁȨÏÞ
0002ËùÓÐÈËдȨÏÞ
0001ËùÓÐÈËÖ´ÐÐȨÏÞ

º¯ÊýÃûchdir
µ÷ÓÃÓï·¨chdir (dirname);
½â˵¸Ä±äµ±Ç°¹¤×÷Ŀ¼¡£²ÎÊýdirname¿ÉÒÔΪ×Ö·û´®£¬Ò²¿ÉÒÔΪ±í´ïʽ¡£

º¯ÊýÃûopendir
µ÷ÓÃÓï·¨opendir (dirvar, dirname);
½â˵´ò¿ªÄ¿Â¼£¬ÓëÏÂÃæ¼¸¸öº¯ÊýºÏÓ㬿ɲ鿴ijĿ¼ÖÐÎļþÁÐ±í¡£²ÎÊýΪ£º
1¡¢dirvar£ºÄ¿Â¼±äÁ¿£¬ÓëÎļþ±äÁ¿ÀàËÆ
2¡¢dirname£ºÄ¿Â¼Ãû£¬¿ÉΪ×Ö·û´®»ò±í´ïʽ
³É¹¦·µ»ØÕæÖµ£¬Ê§°Ü·µ»Ø¼Ù¡£
×¢£º³ÌÐòÖпÉÓÃͬÃûµÄĿ¼±äÁ¿ºÍÎļþ±äÁ¿£¬¸ù¾Ý»·¾³È·¶¨È¡³É·Ö¡£

º¯ÊýÃûclosedir
µ÷ÓÃÓï·¨closedir (mydir);
½â˵¹Ø±Õ´ò¿ªµÄĿ¼¡£

º¯ÊýÃûreaddir
µ÷ÓÃÓï·¨readdir (mydir);
½â˵¸³¸ø¼òµ¥±äÁ¿Ê±£¬Ã¿´Î¸³ÓèÒ»¸öÎļþ»ò×ÓĿ¼Ãû£¬¶ÔÊý×éÔò¸³ÓèÈ«²¿ÎļþºÍ×ÓĿ¼Ãû¡£

º¯ÊýÃûtelldir
µ÷ÓÃÓï·¨location = telldir (mydir);
½â˵ÏóÔÚÎļþÖÐǰºóÒÆ¶¯Ò»Ñù£¬telldirºÍÏÂÃæµÄseekdirÓÃÓÚÔÚĿ¼ÁбíÖÐǰºóÒÆ¶¯¡£

º¯ÊýÃûseekdir
µ÷ÓÃÓï·¨seekdir(mydir, location);
½â˵location±ØÐëΪtelldir·µ»ØµÄÖµ¡£

º¯ÊýÃûrewinddir
µ÷ÓÃÓï·¨rewinddir (mydir);
½â˵½«¶ÁȡĿ¼µÄλÖÃÖØÖûؿªÍ·£¬´Ó¶ø¿ÉÒÔÖØ¶ÁĿ¼ÁÐ±í¡£

º¯ÊýÃûrmdir
µ÷ÓÃÓï·¨rmdir (dirname);
½â˵ɾ³ý¿ÕĿ¼¡£³É¹¦Ôò·µ»ØÕ棨·ÇÁãÖµ£©£¬Ê§°Ü·µ»Ø¼Ù£¨ÁãÖµ£©¡£

Èý¡¢ÎļþÊôÐÔº¯Êý
1¡¢ÎļþÖØ¶¨Î»º¯Êý

º¯ÊýÃûrename
µ÷ÓÃÓï·¨rename (oldname, newname);
½â˵¸Ä±äÎļþÃû»òÒÆ¶¯µ½ÁíÒ»¸öĿ¼ÖУ¬²ÎÊý¿ÉΪ×Ö·û´®»ò±í´ïʽ¡£

º¯ÊýÃûunlink
µ÷ÓÃÓï·¨num = unlink (filelist);
½â˵ɾ³ýÎļþ¡£²ÎÊýΪÎļþÃûÁÐ±í£¬·µ»ØÖµÎªÊµ¼Êɾ³ýµÄÎļþÊýÄ¿¡£
´Ëº¯ÊýÖ®ËùÒÔ½Ðunlink¶ø²»½ÐdeleteÊÇÒòΪËüʵ¼ÊËù×öµÄÊÇɾ³ýÎļþµÄÁ´½Ó¡£

2¡¢Á´½ÓºÍ·ûºÅÁ´½Óº¯Êý

º¯ÊýÃûlink
µ÷ÓÃÓï·¨link (newlink, file);
½â˵´´½¨ÏÖÓÐÎļþµÄÁ´½Ó--Ó²Á´½Ó£¬fileÊDZ»Á´½ÓµÄÎļþ£¬newlinkÊDZ»´´½¨µÄÁ´½Ó¡£
³É¹¦·µ»ØÕ棬ʧ°Ü·µ»Ø¼Ù¡£
µ±É¾³ýÕâÁ½¸öÁ´½ÓÖеÄÒ»¸öʱ£¬»¹¿ÉÒÔÓÃÁíÒ»¸öÀ´·ÃÎʸÃÎļþ¡£

º¯ÊýÃûsymlink
µ÷ÓÃÓï·¨symlink (newlink, file);
½â˵´´½¨ÏÖÓÐÎļþµÄ·ûºÅÁ´½Ó£¬¼´Ö¸ÏòÎļþÃû£¬¶ø²»ÊÇÖ¸ÏòÎļþ±¾Éí¡£²ÎÊýºÍ·µ»ØÖµÍ¬ÉÏ¡£
µ±Ô­Îļþ±»É¾³ý£¨È磺±»unlinkeº¯Êýɾ³ý£©£¬Ôò±»´´½¨Á´½Ó²»¿ÉÓ㬳ý·ÇÔÙ´´½¨Ò»¸öÓëÔ­±»Á´½ÓµÄÎļþͬÃûµÄÎļþ¡£

º¯ÊýÃûreadlink
µ÷ÓÃÓï·¨filename = readlink (linkname);
½â˵Èç¹ûlinknameΪ·ûºÅÁ´½ÓÎļþ£¬·µ»ØÆäʵ¼ÊÖ¸ÏòµÄÎļþ¡£·ñÔò·µ»Ø¿Õ´®¡£

3¡¢ÎļþÐí¿ÉȨº¯Êý

º¯ÊýÃûchmod
µ÷ÓÃÓï·¨chmod (permissions, filelist);
½â˵¸Ä±äÎļþµÄ·ÃÎÊȨÏÞ¡£²ÎÊýΪ£º
1¡¢permissionsΪ½«ÒªÉèÖõÄȨÏÞ£¬Æäº¬Òå¼ûÉÏÊömkdirÖÐȨÏÞ±í
2¡¢filelistΪÓû¸Ä±äȨÏÞµÄÎļþÁбí

º¯ÊýÃûchown
µ÷ÓÃÓï·¨chown (userid, groupid, filelist);
½â˵¸Ä±äÎļþµÄÊôÖ÷£¬ÓÐÈý¸ö²ÎÊý£º
1¡¢userid£ºÐÂÊôÖ÷µÄ(Êý×Ö)IDºÅ
2¡¢groupid£ºÐµÄ×é(Êý×Ö)IDºÅ£¬-1Ϊ±£ÁôÔ­×é
3¡¢filelist£ºÓû¸Ä±äÊôÖ÷µÄÎļþÁбí

º¯ÊýÃûumask
µ÷ÓÃÓï·¨oldmaskval = umask (maskval);
½â˵ÉèÖÃÎļþ·ÃÎÊȨÏÞÑÚÂ룬·µ»ØÖµÎªµ±Ç°ÑÚÂë¡£

4¡¢ÆäËüÊôÐÔº¯Êý

º¯ÊýÃûtruncate
µ÷ÓÃÓï·¨truncate (filename, length);
½â˵½«ÎļþµÄ³¤¶È¼õÉÙµ½length×Ö½Ú¡£Èç¹ûÎļþ³¤¶ÈÒѾ­Ð¡ÓÚlength£¬Ôò²»×öÈκÎÊ¡£ÆäÖÐfilename¿ÉÒÔΪÎļþÃû£¬Ò²¿ÉÒÔΪÎļþ±äÁ¿

º¯ÊýÃûstat
µ÷ÓÃÓï·¨stat (file);
½â˵»ñÈ¡Îļþ״̬¡£²ÎÊýfile¿ÉΪÎļþÃûÒ²¿ÉΪÎļþ±äÁ¿¡£·µ»ØÁбíÔªËØÒÀ´ÎΪ£º

ÎļþËùÔÚÉ豸
ÄÚ²¿²Î¿¼ºÅ(inode)
·ÃÎÊȨÏÞ
Ó²Á´½ÓÊý
ÊôÖ÷µÄ(Êý×Ö)ID
ËùÊô×éµÄ(Êý×Ö)ID
É豸ÀàÐÍ£¨Èç¹ûfileÊÇÉ豸µÄ»°£©
Îļþ´óС£¨×Ö½ÚÊý£©
×îºó·ÃÎÊʱ¼ä
×îºóÐÞ¸Äʱ¼ä×îºó¸Ä±ä״̬ʱ¼ä
I/O²Ù×÷×î¼Ñ¿é´óС
·ÖÅ䏸¸ÃÎļþµÄ¿éÊý


º¯ÊýÃûlstat
µ÷ÓÃÓï·¨lstat (file);
½â˵ÓëstatÀàËÆ£¬Çø±ðÊǽ«file¿´×÷ÊÇ·ûºÅÁ´½Ó¡£

º¯ÊýÃûtime
µ÷ÓÃÓï·¨currtime = time();
½â˵·µ»Ø´Ó1970Äê1ÔÂ1ÈÕÆðÀÛ¼ÆÃëÊý¡£

º¯ÊýÃûgmtime
µ÷ÓÃÓï·¨timelist = gmtime (timeval);
½â˵½«ÓÉtime, stat »ò -A ºÍ -M Îļþ²âÊÔ²Ù×÷·û·µ»ØµÄʱ¼äת»»³É¸ñÁÖÍþÖÎʱ¼ä¡£·µ»ØÁбíÔªËØÒÀ´ÎΪ£º

Ãë
·ÖÖÓ
Сʱ£¬0~23
ÈÕÆÚ
Ô·ݣ¬0~11(Ò»ÔÂ~Ê®¶þÔÂ)
Äê·Ý
ÐÇÆÚ£¬0~6(ÖÜÈÕ~ÖÜÁù)
Ò»ÄêÖеÄÈÕÆÚ£¬0~364
ÊÇ·ñÏÄÁîʱµÄ±êÖ¾
Ïê¼ûUNIXµÄgmtime°ïÖú¡£


º¯ÊýÃûlocaltime
µ÷ÓÃÓï·¨timelist = localtime (timeval);
½â˵ÓëgmtimeÀàËÆ£¬Çø±ðΪ½«Ê±¼äֵת»»Îª±¾µØÊ±¼ä¡£

º¯ÊýÃûutime
µ÷ÓÃÓï·¨utime (acctime, modtime, filelist);
½â˵¸Ä±äÎļþµÄ×îºó·ÃÎÊʱ¼äºÍ×îºó¸ü¸Äʱ¼ä¡£ÀýÈ磺
$acctime = -A "file1";
$modtime = -M "file1";
@filelist = ("file2", "file3");
utime ($acctime, $modtime, @filelist);

º¯ÊýÃûfileno
µ÷ÓÃÓï·¨filedesc = fileno (filevar);
½â˵·µ»ØÎļþµÄÄÚ²¿UNIXÎļþÃèÊö¡£²ÎÊýfilevarΪÎļþ±äÁ¿¡£

º¯ÊýÃûfcntl
flock
µ÷ÓÃÓï·¨fcntl (filevar, fcntlrtn, value);
flock (filevar, flockop);
½â˵Ïê¼ûͬÃûUNIXº¯Êý°ïÖú¡£

ËÄ¡¢Ê¹ÓÃDBMÎļþ
£ PerlÖпÉÓùØÁªÊý×éÀ´·ÃÎÊDBMÎļþ£¬ËùÓú¯ÊýΪdbmopenºÍdbmclose£¬ÔÚPerl5ÖУ¬ÒÑÓÃtieºÍuntie´úÌæ¡£
º¯ÊýÃûdbmopen
µ÷ÓÃÓï·¨dbmopen (array, dbmfilename, permissions);
½â˵½«¹ØÁªÊý×éÓëDBMÎļþÏà¹ØÁª¡£²ÎÊýΪ£º
1¡¢array£ºËùÓùØÁªÊý×é
2¡¢dbmfilename£º½«´ò¿ªµÄDBMÎļþÃû
3¡¢·ÃÎÊȨÏÞ£¬Ïê¼ûmkdir

º¯ÊýÃûdbmclose
µ÷ÓÃÓï·¨dbmclose (array);
½â˵¹Ø±ÕDBMÎļþ£¬²ð³ý¹ØÁªÊý×éÓëÖ®µÄ¹ØÏµ¡£
µÚÊ®¶þÕ Perl5ÖеÄÒýÓÃ/Ö¸Õë
Ò»¡¢ÒýÓüò½é
£  ÒýÓþÍÊÇÖ¸Õ룬¿ÉÒÔÖ¸Ïò±äÁ¿¡¢Êý×é¡¢¹þÏ£±í£¨Ò²½Ð¹ØÁªÊý×飩ÉõÖÁ×Ó³ÌÐò¡£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 $pointer\n";
£  ½á¹ûÊä³öÈçÏ£º

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 = $pointer\n";
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 = $pointer\n ";
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 ";
29 # }
30
31 #
32 # The reference to the associative array via $pointer
33 #
34 foreach $i (sort keys %$pointer) {
35£  printf "$i is $pointer \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ÊǹþÏ£±íµÄ¼üÖµ£¬¶ø²»½öÊÇÊý×Ö¡£»¹Óм¸ÖÖ·ÃÎÊÐÎʽ£¬´ËÍ⣬¹¹½¨¹þÏ£±í»¹¿ÉÒÔÓÃ=>²Ù×÷·û£¬¿É¶ÁÐÔ¸üºÃЩ¡£ÏÂÃæÔÙ¿´Ò»¸öÀý×Ó£º

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 is ';
21£  printf "$pointer \n";
22£  printf '$ is ';
23£  printf "$ \n";
24£  printf '$pointer-> is ';
25
26£  printf "$pointer->\n";
27 #
28 # These next two lines should not show anything 29 #
30£  printf '$} is ';
31£  printf "$} \n";
32£  printf '$} is ';
33£  printf "$}";
34 printf "\n ================== end of test ================= \n";
35
£  ½á¹ûÊä³öÈçÏ£º

================== start test =================
$pointer is Fri
$ is Fri
$pointer-> is Fri
$} is
$} 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;
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; È»ºó·ÃÎʸ÷×ø±êÖµ£º$x = $list->[0]; ... Ò²¿ÉÓÃÈçÏ·½·¨¸ø$x¡¢$yºÍ$z¸³Öµ£º($x,$y,$z) = @$list;
£  ʹÓùþÏ£±íºÍÊý×éʱ£¬ÓÃ$ºÍÓÃ->ÊÇÀàËÆµÄ£¬¶ÔÊý×é¶øÑÔÏÂÃæÁ½¸öÓï¾äµÈЧ£º
£  $names[0] = "kamran";
£  $names->[0] = "kamran";
£  ¶Ô¹þÏ£±í¶øÑÔÏÂÃæÁ½¸öÓï¾äµÈЧ£º
£  $lastnames = "Husain";
£  $lastnames-> = "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:$msg\n"; }; # 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 lettuce\n";
}
£  ×¢ÒâÆäÖÐÎļþ¾ä±úÒýÓõÄÓ﷨Ϊ\*FILEHANDLE¡£
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
6Â¥2005-06-14 19:18:11
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yuefour

½ð³æ (ÕýʽдÊÖ)

1

лл£¬ÐÁ¿àÁË
7Â¥2005-06-14 19:22:28
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

µÚÊ®ÈýÕ PerlµÄÃæÏò¶ÔÏó±à³Ì
£  ±¾Õ½éÉÜÈçºÎʹÓÃPerlµÄÃæÏò¶ÔÏó±à³Ì(OOP)ÌØÐÔ¼°ÈçºÎ¹¹½¨¶ÔÏ󣬻¹°üÀ¨¼Ì³Ð¡¢·½·¨ÖØÔغÍÊý¾Ý·â×°µÈÄÚÈÝ¡£
Ò»¡¢Ä£¿é¼ò½é
£  Ä£¿é(module)¾ÍÊÇPerl°ü(pachage)¡£PerlÖеĶÔÏó»ùÓÚ¶Ô°üÖÐÊý¾ÝÏîµÄÒýÓᣣ¨ÒýÓüûµÚxÕÂÒýÓã©¡£
Ïê¼û_blank tppabs="http://www.metronet.com/">http://www.metronet.comµÄperlmodºÍperlobj¡£
£  ÔÚÓÃÆäËüÓïÑÔ½øÐÐÃæÏò¶ÔÏó±à³Ìʱ£¬ÏÈÉùÃ÷Ò»¸öÀàÈ»ºó´´½¨¸ÃÀàµÄ¶ÔÏó£¨ÊµÀý£©£¬Ìض¨ÀàËùÓжÔÏóµÄÐÐΪ·½Ê½ÊÇÏàͬµÄ£¬ÓÉÀà·½·¨È·¶¨£¬¿ÉÒÔͨ¹ý¶¨ÒåÐÂÀà»ò´ÓÏÖ´æÀà¼Ì³ÐÀ´´´½¨Àà¡£ÒÑÊìÏ¤ÃæÏò¶ÔÏó±à³ÌµÄÈË¿ÉÒÔÔÚ´ËÓöµ½Ðí¶àÊìϤµÄÊõÓï¡£PerlÒ»Ö±ÊÇÒ»¸öÃæÏò¶ÔÏóµÄÓïÑÔ£¬ÔÚPerl5ÖУ¬Óï·¨ÂÔÓб䶯£¬¸ü¹æ·¶»¯Á˶ÔÏóµÄʹÓá£
£  ÏÂÃæÈý¸ö¶¨Òå¶ÔÀí½â¶ÔÏó¡¢ÀàºÍ·½·¨ÔÚPerlÖÐÈçºÎ¹¤×÷ÖÁ¹ØÖØÒª¡£
£  .ÀàÊÇÒ»¸öPerl°ü£¬ÆäÖк¬Ìṩ¶ÔÏó·½·¨µÄÀà¡£
£  .·½·¨ÊÇÒ»¸öPerl×Ó³ÌÐò£¬ÀàÃûÊÇÆäµÚÒ»¸ö²ÎÊý¡£
£  .¶ÔÏóÊǶÔÀàÖÐÊý¾ÝÏîµÄÒýÓá£
¶þ¡¢PerlÖеÄÀà
£  ÔÙÇ¿µ÷һϣ¬Ò»¸öPerlÀàÊǽöÊÇÒ»¸ö°ü¶øÒÑ¡£µ±Äã¿´µ½PerlÎĵµÖÐÌáµ½¡°Àࡱʱ£¬°ÑËü¿´×÷¡°°ü¡±¾ÍÐÐÁË¡£Perl5µÄÓï·¨¿ÉÒÔ´´½¨À࣬Èç¹ûÄãÒÑÊìϤC++£¬ÄÇô´ó²¿·ÖÓï·¨ÄãÒѾ­ÕÆÎÕÁË¡£ÓëPerl4²»Í¬µÄ¸ÅÄîÊÇÓÃ˫ðºÅ(:À´±êʶ»ù±¾ÀàºÍ¼Ì³ÐÀࣨ×ÓÀࣩ¡£
£  ÃæÏò¶ÔÏóµÄÒ»¸öÖØÒªÌØÐÔÊǼ̳С£PerlÖеļ̳ÐÌØÐÔÓëÆäËüÃæÏò¶ÔÏóÓïÑÔ²»ÍêȫһÑù£¬ËüÖ»¼Ì³Ð·½·¨£¬Äã±ØÐëÓÃ×Ô¼ºµÄ»úÖÆÀ´ÊµÏÖÊý¾ÝµÄ¼Ì³Ð¡£
£  ÒòΪÿ¸öÀàÊÇÒ»¸ö°ü£¬ËùÒÔËüÓÐ×Ô¼ºµÄÃû×ֿռ估×Ô¼ºµÄ·ûºÅÃû¹ØÁªÊý×飨Ïê¼ûµÚxÕ¹ØÁªÊý×飩£¬Ã¿¸öÀàÒò¶ø¿ÉÒÔʹÓÃ×Ô¼ºµÄ¶ÀÁ¢·ûºÅÃû¼¯¡£Óë°üµÄÒýÓýáºÏ£¬¿ÉÒÔÓõ¥ÒýºÅ(')²Ù×÷·ûÀ´¶¨Î»ÀàÖеıäÁ¿£¬ÀàÖгÉÔ±µÄ¶¨Î»ÐÎʽÈ磺$class'$member¡£ÔÚPerl5ÖУ¬¿ÉÓÃ˫ðºÅÌæ´úµ¥ÒýºÅÀ´»ñµÃÒýÓã¬È磺$class'$memberÓë$class::$memberÏàͬ¡£
Èý¡¢´´½¨Àà¡£
£  ±¾½Ú½éÉÜ´´½¨Ò»¸öÐÂÀàµÄ±ØÒª²½Öè¡£ÏÂÃæÊ¹ÓõÄÀý×ÓÊÇ´´½¨Ò»¸ö³ÆÎªCocoaµÄ¼òµ¥µÄÀ࣬Æä¹¦ÄÜÊÇÊä³öÒ»¸ö¼òµ¥µÄJavaÓ¦ÓõÄÔ´ÂëµÄ±ØÒª²¿·Ö¡£·ÅÐÄ£¬Õâ¸öÀý×Ó²»ÐèÒªÄãÓÐJavaµÄ֪ʶ£¬µ«Ò²²»»áʹÄã³ÉΪJavaר¼Ò£¬ÆäÄ¿µÄÊǽ²Êö´´½¨ÀàµÄ¸ÅÄî¡£
£  Ê×ÏÈ£¬´´½¨Ò»¸öÃûΪCocoa.pmµÄ°üÎļþ(À©Õ¹ÃûpmÊǰüµÄȱʡÀ©Õ¹Ãû£¬ÒâΪPerl Module)¡£Ò»¸öÄ£¿é¾ÍÊÇÒ»¸ö°ü£¬Ò»¸ö°ü¾ÍÊÇÒ»¸öÀà¡£ÔÚ×öÆäËüÊÂ֮ǰ£¬ÏȼÓÈë¡°1;¡±ÕâÑùÒ»ÐУ¬µ±ÄãÔö¼ÓÆäËüÐÐʱ£¬¼Çס±£Áô¡°1;¡±Îª×îºóÒ»ÐС£ÕâÊÇPerl°üµÄ±ØÐèÌõ¼þ£¬·ñÔò¸Ã°ü¾Í²»»á±»Perl´¦Àí¡£ÏÂÃæÊǸÃÎļþµÄ»ù±¾½á¹¹¡£

package Cocoa;

#
# Put "require" statements in for all required,imported packages
#

#
# Just add code here
#

1; # terminate the package with the required 1;

£  ½ÓÏÂÀ´£¬ÎÒÃÇÍù°üÀïÌí¼Ó·½·¨Ê¹Ö®³ÉΪһ¸öÀà¡£µÚÒ»¸öÐèÌí¼ÓµÄ·½·¨ÊÇnew()£¬ËüÊÇ´´½¨¶ÔÏóʱ±ØÐë±»µ÷Óõģ¬new()·½·¨ÊǶÔÏóµÄ¹¹Ô캯Êý¡£
ËÄ¡¢¹¹Ô캯Êý
£  ¹¹Ô캯ÊýÊÇÀàµÄ×Ó³ÌÐò£¬Ëü·µ»ØÓëÀàÃûÏà¹ØµÄÒ»¸öÒýÓ᣽«ÀàÃûÓëÒýÓÃÏà½áºÏ³ÆÎª¡°×£¸£¡±Ò»¸ö¶ÔÏó£¬ÒòΪ½¨Á¢¸Ã½áºÏµÄº¯ÊýÃûΪbless()£¬ÆäÓ﷨Ϊ£º
£  bless YeReference [,classname]
£  YeReferenceÊǶԱ»¡°×£¸£¡±µÄ¶ÔÏóµÄÒýÓã¬classnameÊÇ¿ÉÑ¡Ïָ¶¨¶ÔÏó»ñÈ¡·½·¨µÄ°üÃû£¬ÆäȱʡֵΪµ±Ç°°üÃû¡£
£  ´´½¨Ò»¸ö¹¹½¨º¯ÊýµÄ·½·¨Îª·µ»ØÒÑÓë¸ÃÀà½áºÏµÄÄÚ²¿½á¹¹µÄÒýÓã¬È磺

sub new {
  my $this = {}; # Create an anonymous hash, and #self points to it.
  bless $this; # Connect the hash to the package Cocoa.
  return $this; # Return the reference to the hash.
}

1;
£  {}´´½¨Ò»¸ö¶Ô²»º¬¼ü/Öµ¶ÔµÄ¹þÏ£±í£¨¼´¹ØÁªÊý×飩µÄÒýÓ㬷µ»ØÖµ±»¸³¸ø¾ÖÓò±äÁ¿$this¡£º¯Êýbless()È¡³ö¸ÃÒýÓ㬸æËß¶ÔÏóËüÒýÓõÄÊÇCocoa£¬×îºó·µ»Ø¸ÃÒýÓ᣺¯ÊýµÄ·µ»ØÖµÏÖÔÚÖ¸ÏòÕâ¸öÄäÃû¹þÏ£±í¡£
£  ´Ónew()º¯Êý·µ»Øºó£¬$thisÒýÓñ»Ïú»Ù£¬µ«µ÷Óú¯Êý±£´æÁ˶ԸùþÏ£±íµÄÒýÓã¬Òò´Ë¸Ã¹þÏ£±íµÄÒýÓÃÊý²»»áΪÁ㣬´Ó¶øÊ¹PerlÔÚÄÚ´æÖб£´æ¸Ã¹þÏ£±í¡£´´½¨¶ÔÏó¿ÉÈçϵ÷Óãº
£  $cup = new Cocoa;
£  ÏÂÃæÓï¾äΪʹÓøðü´´½¨¶ÔÏóµÄÀý×Ó£º

1 #!/usr/bin/perl
2 push (@INC,'pwd');
3 use Cocoa;
4 $cup = new Cocoa;
£  µÚÒ»ÐÐÖ¸³öPerl½âÊÍÆ÷µÄλÖ㬵ڶþÐÐÖУ¬½«µ±Ç°Ä¿Â¼¼Óµ½Â·¾¶Ñ°ÕÒÁбí@INCÖй©Ñ°ÕÒ°üʱʹÓá£ÄãÒ²¿ÉÒÔÔÚ²»Í¬µÄĿ¼Öд´½¨ÄãµÄÄ£¿é²¢Ö¸³ö¸Ã¾ø¶Ô·¾¶¡£ÀýÈ磬Èç¹ûÔÚ/home/test/scripts/´´½¨°ü£¬µÚ¶þÐоÍÓ¦¸ÃÈçÏ£º
£  push (@INC , "/home/test/scripts";
£  ÔÚµÚÈýÐÐÖУ¬°üº¬ÉϰüCocoa.pmÒÔ»ñÈ¡½Å±¾ÖÐËùÐ蹦ÄÜ¡£useÓï¾ä¸æËßPerlÔÚ@INC·¾¶Ñ°ÕÒÎļþCocoa.pm²¢°üº¬µ½½âÎöµÄÔ´Îļþ¿½±´ÖС£useÓï¾äÊÇʹÓÃÀà±ØÐëµÄ¡£µÚËÄÐе÷ÓÃnewº¯Êý´´½¨¶ÔÏó£¬ÕâÊÇPerlµÄÃî´¦£¬Ò²ÊÇÆäÒ×»ìÏýÖ®´¦£¬Ò²ÊÇÆäÇ¿´óÖ®´¦¡£´´½¨¶ÔÏóµÄ·½·¨ÓжàÖÖ£¬¿ÉÒÔÕâÑùд£º
£  $cup = cocoa->new();
£  Èç¹ûÄãÊÇC³ÌÐòÔ±£¬¿ÉÒÔÓÃ˫ðºÅÇ¿ÖÆÊ¹ÓÃCocoa°üÖеÄnew()º¯Êý£¬È磺
£  $cup = Cocoa::new();
£  ¿ÉÒÔÔÚ¹¹Ô캯ÊýÖмÓÈë¸ü¶àµÄ´úÂ룬ÈçÔÚCocoa.pmÖУ¬¿ÉÒÔÔÚÿ¸ö¶ÔÏó´´½¨Ê±Êä³öÒ»¸ö¼òµ¥ÉùÃ÷£¬»¹¿ÉÒÔÓù¹Ô캯Êý³õʼ»¯±äÁ¿»òÉèÖÃÊý×é»òÖ¸Õë¡£
×¢Ò⣺
1¡¢Ò»¶¨ÒªÔÚ¹¹Ô캯ÊýÖгõʼ»¯±äÁ¿£»
2¡¢Ò»¶¨ÒªÓÃmyº¯ÊýÔÚ·½·¨Öд´½¨±äÁ¿£»
3¡¢Ò»¶¨²»ÒªÔÚ·½·¨ÖÐʹÓÃlocal£¬³ý·ÇÕæµÄÏë°Ñ±äÁ¿´«µÝ¸øÆäËü×Ó³ÌÐò£»
4¡¢Ò»¶¨²»ÒªÔÚÀàÄ£¿éÖÐʹÓÃÈ«¾Ö±äÁ¿¡£
£  ¼ÓÉÏÉùÃ÷µÄCocoa¹¹Ô캯ÊýÈçÏ£º

sub new {
  my $this = {};
  print "\n /* \n ** Created by Cocoa.pm \n ** Use at own risk";
  print "\n ** Did this code even get pass the javac compiler? ";
  print "\n **/ \n";
  bless $this;
  return $this;
}
£  Ò²¿ÉÒÔ¼òµ¥µØµ÷ÓðüÄÚ»ò°üÍâµÄÆäËüº¯ÊýÀ´×ö¸ü¶àµÄ³õʼ»¯¹¤×÷£¬È磺

sub new {
  my $this = {}
  bless $this;
  $this->doInitialization();
  return $this;
}
£  ´´½¨Ààʱ£¬Ó¦¸ÃÔÊÐíËü¿É±»¼Ì³Ð£¬Ó¦¸Ã¿ÉÒÔ°ÑÀàÃû×÷ΪµÚÒ»¸ö²ÎÊýÀ´µ÷ÓÃnewº¯Êý£¬ÄÇônewº¯Êý¾ÍÏóÏÂÃæµÄÓï¾ä£º

sub new {
  my $class = shift; # Get the request class name
  my $this = {};
  bless $this, $class # Use class name to bless() reference
  $this->doInitialization(); return $this;
}
£  ´Ë·½·¨Ê¹Óû§¿ÉÒÔÏÂÁÐÈýÖÖ·½Ê½Ö®Ò»À´½øÐе÷Óãº

Cocoa::new()
Cocoa->new()
new Cocoa
£  ¿ÉÒÔ¶à´ÎblessÒ»¸öÒýÓöÔÏó£¬È»¶ø£¬ÐµĽ«±»blessµÄÀà±ØÈ»°Ñ¶ÔÏóÒѱ»blessµÄÒýÓÃÈ¥µô£¬¶ÔCºÍPascal³ÌÐòÔ±À´Ëµ£¬Õâ¾ÍÏó°ÑÒ»¸öÖ¸Õ븳¸ø·ÖÅäµÄÒ»¿éÄڴ棬ÔÙ°ÑͬһָÕ븳¸øÁíÒ»¿éÄÚ´æ¶ø²»Êͷŵôǰһ¿éÄÚ´æ¡£×ÜÖ®£¬Ò»¸öPerl¶ÔÏóÿһʱ¿ÌÖ»ÄÜÊôÓÚÒ»¸öÀà¡£
£  ¶ÔÏóºÍÒýÓõÄÕæÕýÇø±ðÊÇÊ²Ã´ÄØ£¿Perl¶ÔÏó±»blessÒÔÊôÓÚijÀ࣬ÒýÓÃÔò²»È»£¬Èç¹ûÒýÓñ»bless£¬Ëü½«ÊôÓÚÒ»¸öÀ࣬Ҳ±ã³ÉÁ˶ÔÏó¡£¶ÔÏóÖªµÀ×Ô¼ºÊôÓÚÄĸöÀ࣬ÒýÓÃÔò²»ÊôÓÚÈκÎÀà¡£


ʵÀý±äÁ¿

£  ×÷Ϊ¹¹Ô캯ÊýµÄnew()º¯ÊýµÄ²ÎÊý½Ð×öʵÀý±äÁ¿¡£ÊµÀý±äÁ¿ÔÚ´´½¨¶ÔÏóµÄÿ¸öʵÀýʱÓÃÓÚ³õʼ»¯£¬ÀýÈç¿ÉÒÔÓÃnew()º¯ÊýΪ¶ÔÏóµÄÿ¸öʵÀýÆð¸öÃû×Ö¡£
£  ¿ÉÒÔÓÃÄäÃû¹þÏ£±í»òÄäÃûÊý×éÀ´±£´æÊµÀý±äÁ¿¡£
£  ÓùþÏ£±íµÄ´úÂëÈçÏ£º

sub new {
my $type = shift;
my %parm = @_;
my $this = {};
$this-> = $parm;
$this-> = $parm;
$this-> = $parm;
bless $this, $type;
}
£  ÓÃÊý×é±£´æµÄ´úÂëÈçÏ£º

sub new {
my $type = shift;
my %parm = @_;
my $this = [];
$this->[0] = $parm;
$this->[1] = $parm;
$this->[2] = $parm;
bless $this, $type;
}
£  ¹¹Ôì¶ÔÏóʱ£¬¿ÉÒÔÈçÏ´«µÝ²ÎÊý£º
£  $mug = Cocoa::new( 'Name' => 'top','x' => 10,'y' => 20 );
£  ²Ù×÷·û=>Ó붺ºÅ²Ù×÷·þ¹¦ÄÜÏàͬ£¬µ«=>¿É¶ÁÐԺ᣷ÃÎÊ·½·¨ÈçÏ£º
£  print "Name=$mug->\n";
£  print "x=$mug->\n";
£  print "y=$mug->\n";
Îå¡¢·½·¨
£  PerlÀàµÄ·½·¨Ö»²»¹ýÊÇÒ»¸öPerl×Ó³ÌÐò¶øÒÑ£¬Ò²¼´Í¨³£Ëù˵µÄ³ÉÔ±º¯Êý¡£PerlµÄ·½·¨¶¨Òå²»ÌṩÈκÎÌØÊâÓï·¨£¬µ«¹æ¶¨·½·¨µÄµÚÒ»¸ö²ÎÊýΪ¶ÔÏó»òÆä±»ÒýÓõİü¡£PerlÓÐÁ½ÖÖ·½·¨£º¾²Ì¬·½·¨ºÍÐé·½·¨¡£
£  ¾²Ì¬·½·¨µÚÒ»¸ö²ÎÊýΪÀàÃû£¬Ðé·½·¨µÚÒ»¸ö²ÎÊýΪ¶ÔÏóµÄÒýÓ᣷½·¨´¦ÀíµÚÒ»¸ö²ÎÊýµÄ·½Ê½¾ö¶¨ÁËËüÊǾ²Ì¬µÄ»¹ÊÇÐéµÄ¡£¾²Ì¬·½·¨Ò»°ãºöÂÔµôµÚÒ»¸ö²ÎÊý£¬ÒòΪËüÃÇÒѾ­ÖªµÀ×Ô¼ºÔÚÄĸöÀàÁË£¬¹¹Ô캯Êý¼´¾²Ì¬·½·¨¡£Ðé·½·¨Í¨³£Ê×ÏȰѵÚÒ»¸ö²ÎÊýshiftµ½±äÁ¿self»òthisÖУ¬È»ºó½«¸ÃÖµ×÷ÆÕͨµÄÒýÓÃʹÓá£È磺

1. sub nameLister {
2.£ £  my $this = shift;
3.£ £  my ($keys ,$value );
4.£ £  while (($key, $value) = each (%$this)) {
5.£ £ £ £  print "\t$key is $value.\n";
6.£ £  }
7. }
Áù¡¢·½·¨µÄÊä³ö
£  Èç¹ûÄãÏÖÔÚÏëÒýÓÃCocoa.pm°ü£¬½«»áµÃµ½±àÒë´íÎó˵δÕÒµ½·½·¨£¬ÕâÊÇÒòΪCocoa.pmµÄ·½·¨»¹Ã»ÓÐÊä³ö¡£Êä³ö·½·¨ÐèÒªExporterÄ£¿é£¬ÔÚ°üµÄ¿ªÊ¼²¿·Ö¼ÓÉÏÏÂÁÐÁ½ÐУº
£  require Exporter;
£  @ISA = qw (Exporter);
£  ÕâÁ½Ðаüº¬ÉÏExporter.pmÄ£¿é£¬²¢°ÑExporterÀàÃû¼ÓÈë@ISAÊý×éÒÔ¹©²éÕÒ¡£½ÓÏÂÀ´°ÑÄã×Ô¼ºµÄÀà·½·¨ÁÐÔÚ@EXPORTÊý×éÖоͿÉÒÔÁË¡£ÀýÈçÏëÊä³ö·½·¨closeMainºÍdeclareMain£¬Óï¾äÈçÏ£º
£  @EXPORT = qw (declareMain , closeMain);
£  PerlÀàµÄ¼Ì³ÐÊÇͨ¹ý@ISAÊý×éʵÏֵġ£@ISAÊý×é²»ÐèÒªÔÚÈκΰüÖж¨Ò壬Ȼ¶ø£¬Ò»µ©Ëü±»¶¨Ò壬Perl¾Í°ÑËü¿´×÷Ŀ¼ÃûµÄÌØÊâÊý×é¡£ËüÓë@INCÊý×éÀàËÆ£¬@INCÊǰüº¬ÎļþµÄѰÕÒ·¾¶¡£@ISAÊý×麬ÓÐÀà(°ü)Ãû£¬µ±Ò»¸ö·½·¨ÔÚµ±Ç°°üÖÐδÕÒµ½Ê±¾Íµ½@ISAÖеİüȥѰÕÒ¡£@ISAÖл¹º¬Óе±Ç°Àà¼Ì³ÐµÄ»ùÀàÃû¡£
£  ÀàÖе÷ÓõÄËùÓз½·¨±ØÐëÊôÓÚͬһ¸öÀà»ò@ISAÊý×鶨ÒåµÄ»ùÀà¡£Èç¹ûÒ»¸ö·½·¨ÔÚ@ISAÊý×éÖÐδÕÒµ½£¬Perl¾Íµ½AUTOLOAD()×Ó³ÌÐòÖÐѰÕÒ£¬Õâ¸ö¿ÉÑ¡µÄ×Ó³ÌÐòÔÚµ±Ç°°üÖÐÓÃsub¶¨Òå¡£ÈôʹÓÃAUTOLOAD×Ó³ÌÐò£¬±ØÐëÓÃuse Autoload;Óï¾äµ÷ÓÃautoload.pm°ü¡£AUTOLOAD×Ó³ÌÐò³¢ÊÔ´ÓÒѰ²×°µÄPerl¿âÖÐ×°ÔØµ÷Óõķ½·¨¡£Èç¹ûAUTOLOADҲʧ°ÜÁË£¬PerlÔÙµ½UNIVERSALÀà×ö×îºóÒ»´Î³¢ÊÔ£¬Èç¹ûÈÔʧ°Ü£¬Perl¾ÍÉú³É¹ØÓÚ¸ÃÎÞ·¨½âÎöº¯ÊýµÄ´íÎó¡£
Æß¡¢·½·¨µÄµ÷ÓÃ
£  µ÷ÓÃÒ»¸ö¶ÔÏóµÄ·½·¨ÓÐÁ½ÖÖ·½·¨£¬Ò»ÊÇͨ¹ý¸Ã¶ÔÏóµÄÒýÓã¨Ðé·½·¨£©£¬Ò»ÊÇÖ±½ÓʹÓÃÀàÃû£¨¾²Ì¬·½·¨£©¡£µ±È»¸Ã·½·¨±ØÐëÒѱ»Êä³ö¡£ÏÖÔÚ¸øCocoaÀàÔö¼ÓһЩ·½·¨£¬´úÂëÈçÏ£º
package Cocoa;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(setImports, declareMain, closeMain);
#
# This routine creates the references for imports in Java functions
#
sub setImports{
  my $class = shift @_;
  my @names = @_;
  foreach (@names) {
£  print "import " . $_ . ";\n";
  }
}
#
# This routine declares the main function in a Java script
#
sub declareMain{
  my $class = shift @_;
  my ( $name, $extends, $implements) = @_;
  print "\n public class $name";
  if ($extends) {
£  print " extends " . $extends;
  }
  if ($implements) {
£  print " implements " . $implements;
  }
  print " { \n";
}
#
# This routine declares the main function in a Java script
#
sub closeMain{
  print "} \n";
}
#
# This subroutine creates the header for the file.
#
sub new {
  my $this = {};
  print "\n /* \n ** Created by Cocoa.pm \n ** Use at own risk \n */ \n";
  bless $this;
  return $this;
}

1;
£  ÏÖÔÚ£¬ÎÒÃÇдһ¸ö¼òµ¥µÄPerl½Å±¾À´Ê¹ÓøÃÀàµÄ·½·¨£¬ÏÂÃæÊÇ´´½¨Ò»¸öJava appletÔ´´úÂë¹Ç¼ÜµÄ½Å±¾´úÂ룺
#!/usr/bin/perl
use Cocoa;
$cup = new Cocoa;
$cup->setImports( 'java.io.InputStream', 'java.net.*');
$cup->declareMain( "Msg" , "java.applet.Applet", "Runnable";
$cup->closeMain();

£  Õâ¶Î½Å±¾´´½¨ÁËÒ»¸ö½Ð×öMsgµÄJava applet£¬ËüÀ©Õ¹(extend)ÁËjava.applet.AppletСӦÓóÌÐò²¢Ê¹Ö®¿ÉÔËÐÐ(runnable)£¬ÆäÖÐ×îºóÈýÐÐÒ²¿ÉÒÔд³ÉÈçÏ£º
Cocoa::setImports($cup, 'java.io.InputStream', 'java.net.*');
Cocoa::declareMain($cup, "Msg" , "java.applet.Applet", "Runnable";
Cocoa::closeMain($cup);
£  ÆäÔËÐнá¹ûÈçÏ£º
/*
** Created by Cocoa.pm
** Use at own risk
*/
import java.io.InputStream;
import java.net.*;

public class Msg extends java.applet.Applet implements Runnable {
}
£  ×¢Ò⣺Èç¹ûÓÃ->²Ù×÷·ûµ÷Ó÷½·¨£¨Ò²½Ð¼ä½Óµ÷Óã©£¬²ÎÊý±ØÐëÓÃÀ¨ºÅÀ¨ÆðÀ´£¬È磺$cup->setImports( 'java.io.InputStream', 'java.net.*');¶øË«Ã°ºÅµ÷ÓÃÈ磺Cocoa::setImports($cup, 'java.io.InputStream', 'java.net.*');Ò²¿ÉÈ¥µôÀ¨ºÅд³É£ºCocoa::setImports $cup, 'java.io.InputStream', 'java.net.*' ;
°Ë¡¢ÖØÔØ
£  ÓÐʱÐèÒªÖ¸¶¨Ê¹ÓÃÄĸöÀàµÄ·½·¨£¬ÈçÁ½¸ö²»Í¬µÄÀàÓÐͬÃû·½·¨µÄʱºò¡£¼ÙÉèÀàEspressoºÍQava¶¼¶¨ÒåÁË·½·¨grind£¬¿ÉÒÔÓÃ::²Ù×÷·ûÖ¸¶¨Ê¹ÓÃQavaµÄ·½·¨£º
£  $mess = Qava::grind("whole","lotta","bags";
£  Qava::grind($mess, "whole","lotta","bags";
£  ¿ÉÒÔ¸ù¾Ý³ÌÐòµÄÔËÐÐÇé¿öÀ´Ñ¡ÔñʹÓÃÄĸöÀàµÄ·½·¨£¬Õâ¿ÉÒÔͨ¹ýʹÓ÷ûºÅÒýÓÃÈ¥µ÷ÓÃÀ´ÊµÏÖ£º
£  $method = $local ? "Qava::" : "Espresso::";
£  $cup->grind(@args);
¾Å¡¢Îö¹¹º¯Êý
£  Perl¸ú×Ù¶ÔÏóµÄÁ´½ÓÊýÄ¿£¬µ±Ä³¶ÔÏóµÄ×îºóÒ»¸öÓ¦ÓÃÊͷŵ½ÄÚ´æ³ØÊ±£¬¸Ã¶ÔÏó¾Í×Ô¶¯Ïú»Ù¡£¶ÔÏóµÄÎö¹¹·¢ÉúÔÚ´úÂëÍ£Ö¹ºó£¬½Å±¾½«Òª½áÊøÊ±¡£¶ÔÓÚÈ«¾Ö±äÁ¿¶øÑÔ£¬Îö¹¹·¢ÉúÔÚ×îºóÒ»ÐдúÂëÔËÐÐÖ®ºó¡£
£  Èç¹ûÄãÏëÔÚ¶ÔÏó±»ÊÍ·Å֮ǰ»ñÈ¡¿ØÖÆÈ¨£¬¿ÉÒÔ¶¨ÒåDESTROY()·½·¨¡£DESTROY()ÔÚ¶ÔÏó½«ÊÍ·Åǰ±»µ÷Óã¬Ê¹Äã¿ÉÒÔ×öһЩÇåÀí¹¤×÷¡£DESTROY()º¯Êý²»×Ô¶¯µ÷ÓÃÆäËüDESTROY()º¯Êý£¬Perl²»×öÄÚÖõÄÎö¹¹¹¤×÷¡£Èç¹û¹¹Ô캯Êý´Ó»ùÀà¶à´Îbless£¬DESTROY()¿ÉÄÜÐèÒªµ÷ÓÃÆäËüÀàµÄDESTROY()º¯Êý¡£µ±Ò»¸ö¶ÔÏó±»ÊÍ·Åʱ£¬ÆäÄÚº¬µÄËùÓжÔÏóÒýÓÃ×Ô¶¯ÊÍ·Å¡¢Ïú»Ù¡£
£  Ò»°ãÀ´Ëµ£¬²»ÐèÒª¶¨ÒåDESTROY()º¯Êý£¬Èç¹ûÐèÒª£¬ÆäÐÎʽÈçÏ£º

sub DESTROY {
#
# Add code here.
#
}
£  ÒòΪ¶àÖÖÄ¿µÄ£¬PerlʹÓÃÁ˼òµ¥µÄ¡¢»ùÓÚÒýÓõÄÀ¬»ø»ØÊÕϵͳ¡£ÈκζÔÏóµÄÒýÓÃÊýÄ¿±ØÐë´óÓÚÁ㣬·ñÔò¸Ã¶ÔÏóµÄÄÚ´æ¾Í±»ÊÍ·Å¡£µ±³ÌÐòÍ˳öʱ£¬PerlµÄÒ»¸ö³¹µ×µÄ²éÕÒ²¢Ïú»Ùº¯Êý½øÐÐÀ¬»ø»ØÊÕ£¬½ø³ÌÖеÄÒ»Çб»¼òµ¥µØÉ¾³ý¡£ÔÚUNIXÀàµÄϵͳÖУ¬ÕâÏñÊǶàÓàµÄ£¬µ«ÔÚÄÚǶʽϵͳ»ò¶àÏ̻߳·¾³ÖÐÕâȷʵºÜ±ØÒª¡£
Ê®¡¢¼Ì³Ð
£  Àà·½·¨Í¨¹ý@ISAÊý×é¼Ì³Ð£¬±äÁ¿µÄ¼Ì³Ð±ØÐëÃ÷È·É趨¡£ÏÂÀý´´½¨Á½¸öÀàBean.pmºÍCoffee.pm£¬ÆäÖÐCoffee.pm¼Ì³ÐBean.pmµÄһЩ¹¦ÄÜ¡£´ËÀýÑÝʾÈçºÎ´Ó»ùÀࣨ»ò³Æ³¬Àࣩ¼Ì³ÐʵÀý±äÁ¿£¬Æä·½·¨Îªµ÷ÓûùÀàµÄ¹¹Ô캯Êý²¢°Ñ×Ô¼ºµÄʵÀý±äÁ¿¼Óµ½Ð¶ÔÏóÖС£
£  Bean.pm´úÂëÈçÏ£º

package Bean;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(setBeanType);

sub new {
  my $type = shift;
  my $this = {};
  $this-> = 'Colombian';
  bless $this, $type;
  return $this;
}

#
# This subroutine sets the class name
sub setBeanType{
  my ($class, $name) = @_;
  $class-> = $name;
  print "Set bean to $name \n";
}
1;
£  ´ËÀàÖУ¬ÓÃ$this±äÁ¿ÉèÖÃÒ»¸öÄäÃû¹þÏ£±í£¬½«'Bean'ÀàÐÍÉèΪ'Colombian'¡£·½·¨setBeanType()ÓÃÓڸıä'Bean'ÀàÐÍ£¬ËüʹÓÃ$classÒýÓûñµÃ¶Ô¶ÔÏó¹þÏ£±íµÄ·ÃÎÊ¡£
£  Coffee.pm´úÂëÈçÏ£º

1£ #
2£ # The Coffee.pm file to illustrate inheritance.
3£ #
4£ package Coffee;
5£ require Exporter;
6£ require Bean;
7£ @ISA = qw(Exporter, Bean);
8£ @EXPORT = qw(setImports, declareMain, closeMain);
9£ #
10 # set item
11 #
12 sub setCoffeeType{
13£  my ($class,$name) = @_;
14£  $class-> = $name;
15£  print "Set coffee type to $name \n";
16£  }
17 #
18 # constructor
19 #
20 sub new {
21£  my $type = shift;
22£  my $this = Bean->new(); ##### <- LOOK HERE!!! ####
23£  $this-> = 'Instant'; # unless told otherwise
24£  bless $this, $type;
25£  return $this;
26£  }
27 1;
£  µÚ6ÐеÄrequire Bean;Óï¾ä°üº¬ÁËBean.pmÎļþºÍËùÓÐÏà¹Øº¯Êý£¬·½·¨setCoffeeType()ÓÃÓÚÉèÖþÖÓò±äÁ¿$class->µÄÖµ¡£ÔÚ¹¹Ô캯Êýnew()ÖУ¬$thisÖ¸ÏòBean.pm·µ»ØµÄÄäÃû¹þÏ£±íµÄÖ¸Õ룬¶ø²»ÊÇÔÚ±¾µØ´´½¨Ò»¸ö£¬ÏÂÃæÁ½¸öÓï¾ä·Ö±ðΪ´´½¨²»Í¬µÄ¹þÏ£±í´Ó¶øÓëBean.pm¹¹Ô캯Êý´´½¨µÄ¹þÏ£±íÎ޹صÄÇé¿öºÍ¼Ì³ÐµÄÇé¿ö£º
£  my $this = {}; #·Ç¼Ì³Ð
£  my $this = $theSuperClass->new(); #¼Ì³Ð
£  ÏÂÃæ´úÂëÑÝʾÈçºÎµ÷Óü̳еķ½·¨£º

1£ #!/usr/bin/perl
2£ push (@INC,'pwd');
3£ use Coffee;
4£ $cup = new Coffee;
5£ print "\n -------------------- Initial values ------------ \n";
6£ print "Coffee: $cup-> \n";
7£ print "Bean: $cup-> \n";
8£ print "\n -------------------- Change Bean Type ---------- \n";
9£ $cup->setBeanType('Mixed');
10 print "Bean Type is now $cup-> \n";
11 print "\n ------------------ Change Coffee Type ---------- \n";
12 $cup->setCoffeeType('Instant');
13 print "Type of coffee: $cup-> \n";
£  ¸Ã´úÂëµÄ½á¹ûÊä³öÈçÏ£º

-------------------- Initial values ------------
Coffee: Instant
Bean: Colombian
-------------------- Change Bean Type ----------
Set bean to Mixed
Bean Type is now Mixed
------------------ Change Coffee Type ----------
Set coffee type to Instant
Type of coffee: Instant
£  ÉÏÊö´úÂëÖУ¬ÏÈÊä³ö¶ÔÏó´´½¨Ê±¹þÏ£±íÖÐË÷ÒýΪ'Bean'ºÍ'Coffee'µÄÖµ£¬È»ºóµ÷Óø÷³ÉÔ±º¯Êý¸Ä±äÖµºóÔÙÊä³ö¡£
£  ·½·¨¿ÉÒÔÓжà¸ö²ÎÊý£¬ÏÖÔÚÏòCoffee.pmÄ£¿éÔö¼Óº¯ÊýmakeCup()£¬´úÂëÈçÏ£º

sub makeCup {
  my ($class, $cream, $sugar, $dope) = @_;
  print "\n================================== \n";
  print "Making a cup \n";
  print "Add cream \n" if ($cream);
  print "Add $sugar sugar cubes\n" if ($sugar);
  print "Making some really addictive coffee ;-) \n" if ($dope);
  print "================================== \n";
}
£  ´Ëº¯Êý¿ÉÓÐÈý¸ö²ÎÊý£¬²»Í¬ÊýÄ¿¡¢ÖµµÄ²ÎÊý²úÉú²»Í¬µÄ½á¹û£¬ÀýÈ磺

1£ #!/usr/bin/perl
2£ push (@INC,'pwd');
3£ use Coffee;
4£ $cup = new Coffee;
5£ #
6£ # With no parameters
7£ #
8£ print "\n Calling with no parameters: \n";
9£ $cup->makeCup;
10 #
11 # With one parameter
12 #
13 print "\n Calling with one parameter: \n";
14 $cup->makeCup('1');
15 #
16 # With two parameters
17 #
18 print "\n Calling with two parameters: \n";
19 $cup->makeCup(1,'2');
20 #
21 # With all three parameters
22 #
23 print "\n Calling with three parameters: \n";
24 $cup->makeCup('1',3,'1');
£  Æä½á¹ûÊä³öÈçÏ£º

Calling with no parameters:
==================================
Making a cup
==================================
Calling with one parameter:
==================================
Making a cup
Add cream
==================================
Calling with two parameters:
==================================
Making a cup
Add cream
Add 2 sugar cubes
==================================
Calling with three parameters:
==================================
Making a cup
Add cream
Add 3 sugar cubes
Making some really addictive coffee ;-)
==================================
£  ÔÚ´ËÀýÖУ¬º¯ÊýmakeCup()µÄ²ÎÊý¼È¿ÉΪ×Ö·û´®Ò²¿ÉΪÕûÊý£¬´¦Àí½á¹ûÏàͬ£¬ÄãÒ²¿ÉÒÔ°ÑÕâÁ½ÖÖÀàÐ͵ÄÊý¾Ý´¦ÀíÇø·Ö¿ª¡£ÔÚ¶Ô²ÎÊýµÄ´¦ÀíÖУ¬¿ÉÒÔÉèÖÃȱʡµÄÖµ£¬Ò²¿ÉÒÔ¸ù¾Ýʵ¼ÊÊäÈë²ÎÊýÖµµÄ¸öÊý¸øÓ費ͬ´¦Àí¡£
ʮһ¡¢×ÓÀà·½·¨µÄÖØÔØ
£  ¼Ì³ÐµÄºÃ´¦ÔÚÓÚ¿ÉÒÔ»ñµÃ»ùÀàÊä³öµÄ·½·¨µÄ¹¦ÄÜ£¬¶øÓÐʱÐèÒª¶Ô»ùÀàµÄ·½·¨ÖØÔØÒÔ»ñµÃ¸ü¾ßÌå»ò²»Í¬µÄ¹¦ÄÜ¡£ÏÂÃæÔÚBean.pmÀàÖмÓÈë·½·¨printType()£¬´úÂëÈçÏ£º

sub printType {
  my $class = shift @_;
  print "The type of Bean is $class-> \n";
}
£  È»ºó¸üÐÂÆä@EXPORTÊý×éÀ´Êä³ö£º
£  @EXPORT = qw ( setBeanType , printType );
£  ÏÖÔÚÀ´µ÷Óú¯ÊýprintType()£¬ÓÐÈýÖÖµ÷Ó÷½·¨£º

$cup->Coffee::printType();
$cup->printType();
$cup->Bean::printType();
£  Êä³ö·Ö±ðÈçÏ£º

The type of Bean is Mixed
The type of Bean is Mixed
The type of Bean is Mixed
£  Ϊʲô¶¼Ò»ÑùÄØ£¿ÒòΪÔÚ×ÓÀàÖÐûÓж¨Ò庯ÊýprintType()£¬ËùÒÔʵ¼Ê¾ùµ÷ÓÃÁË»ùÀàÖеķ½·¨¡£Èç¹ûÏëʹ×ÓÀàÓÐÆä×Ô¼ºµÄprintType()º¯Êý£¬±ØÐëÔÚCoffee.pmÀàÖмÓÒÔ¶¨Ò壺

#
# This routine prints the type of $class->
#
sub printType {
  my $class = shift @_;
  print "The type of Coffee is $class-> \n";
}
£  È»ºó¸üÐÂÆä@EXPORTÊý×飺
£  @EXPORT = qw(setImports, declareMain, closeMain, printType);
£  ÏÖÔÚÊä³ö½á¹û±ä³ÉÁË£º

The type of Coffee is Instant
The type of Coffee is Instant
The type of Bean is Mixed
£  ÏÖÔÚÖ»Óе±¸ø¶¨ÁËBean::ʱ²Åµ÷ÓûùÀàµÄ·½·¨£¬·ñÔòÖ±½Óµ÷ÓÃ×ÓÀàµÄ·½·¨¡£
£  ÄÇôÈç¹û²»ÖªµÀ»ùÀàÃû¸ÃÈçºÎµ÷ÓûùÀà·½·¨ÄØ£¿·½·¨ÊÇʹÓÃαÀà±£Áô×ÖSUPER::¡£ÔÚÀà·½·¨ÄÚʹÓÃÓï·¨È磺$this->SUPER::function(...argument list...); £¬Ëü½«´Ó@ISAÁбíÖÐѰÕÒ¡£¸Õ²ÅµÄÓï¾äÓÃSUPER::Ìæ»»Bean::¿ÉÒÔдΪ$cup->SUPER::printType(); £¬Æä½á¹ûÊä³öÏàͬ£¬Îª£º

The type of Bean is Mixed
Ê®¶þ¡¢PerlÀàºÍ¶ÔÏóµÄһЩעÊÍ
£  OOPµÄ×î´óºÃ´¦¾ÍÊÇ´úÂëÖØÓá£OOPÓÃÊý¾Ý·â×°À´Òþ²ØÒ»Ð©¸´ÔӵĴúÂ룬PerlµÄ°üºÍÄ£¿éͨ¹ýmyº¯ÊýÌṩÊý¾Ý·â×°¹¦ÄÜ£¬µ«ÊÇPerl²¢²»±£Ö¤×ÓÀàÒ»¶¨²»»áÖ±½Ó·ÃÎÊ»ùÀàµÄ±äÁ¿£¬Õâȷʵ¼õÉÙÁËÊý¾Ý·â×°µÄºÃ´¦£¬ËäÈ»ÕâÖÖ¶¯×÷ÊÇ¿ÉÒÔ×öµ½µÄ£¬µ«È´ÊǸöºÜ»µµÄ±à³Ì·ç¸ñ¡£
×¢Ò⣺
1¡¢Ò»¶¨ÒªÍ¨¹ý·½·¨À´·ÃÎÊÀà±äÁ¿¡£
2¡¢Ò»¶¨²»Òª´ÓÄ£¿éÍⲿֱ½Ó·ÃÎÊÀà±äÁ¿¡£
£  µ±±àд°üʱ£¬Ó¦¸Ã±£Ö¤·½·¨ËùÐèµÄÌõ¼þÒѾ߱¸»òͨ¹ý²ÎÊý´«µÝ¸øËü¡£ÔÚ°üÄÚ²¿£¬Ó¦±£Ö¤¶ÔÈ«¾Ö±äÁ¿µÄ·ÃÎÊÖ»ÓÃͨ¹ý·½·¨´«µÝµÄÒýÓÃÀ´·ÃÎÊ¡£¶ÔÓÚ·½·¨ÒªÊ¹Óõľ²Ì¬»òÈ«¾ÖÊý¾Ý£¬Ó¦¸ÃÔÚ»ùÀàÖÐÓÃlocal()À´¶¨Ò壬×ÓÀàͨ¹ýµ÷ÓûùÀàÀ´»ñÈ¡¡£ÓÐʱ£¬×ÓÀà¿ÉÄÜÐèÒª¸Ä±äÕâÖÖÊý¾Ý£¬Õâʱ£¬»ùÀà¿ÉÄܾͲ»ÖªµÀÔõÑùȥѰÕÒеÄÊý¾Ý£¬Òò´Ë£¬Õâʱ×îºÃ¶¨Òå¶Ô¸ÃÊý¾ÝµÄÒýÓã¬×ÓÀàºÍ»ùÀ඼ͨ¹ýÒýÓÃÀ´¸Ä±ä¸ÃÊý¾Ý¡£
£  ×îºó£¬Ä㽫¿´µ½ÈçÏ·½Ê½À´Ê¹ÓöÔÏóºÍÀࣺ
£  use coffee::Bean;
£  Õâ¾äÓï¾äµÄº¬ÒåÊÇ¡°ÔÚ@INCÊý×éËùÓÐĿ¼µÄCoffee×ÓĿ¼À´Ñ°ÕÒBean.pm¡±¡£Èç¹û°ÑBean.pmÒÆµ½./CoffeeĿ¼£¬ÉÏÃæµÄÀý×Ó½«ÓÃÕâÒ»useÓï¾äÀ´¹¤×÷¡£ÕâÑùµÄºÃ´¦ÊÇÓÐÌõÀíµØ×éÖ¯ÀàµÄ´úÂë¡£ÔÙÈ磬ÏÂÃæµÄÓï¾ä£º
£  use Another::Sub::Menu;
£  Òâζ×ÅÈçÏÂ×ÓĿ¼Ê÷£º
£  ./Another/Sub/Menu.pm
µÚÊ®ËÄÕ Perl5µÄ°üºÍÄ£¿é
Ò»¡¢requireº¯Êý
£  ÓÃrequireº¯Êý¿ÉÒ԰ѳÌÐò·Ö¸î³É¶à¸öÎļþ²¢´´½¨º¯Êý¿â¡£ÀýÈ磬ÔÚmyfile.plÖÐÓж¨ÒåºÃµÄPerlº¯Êý£¬¿ÉÓÃÓï¾ärequire ("myfile.pl"; ÔÚ³ÌÐòÖаüº¬½øÀ´¡£µ±Perl½âÊÍÆ÷¿´µ½ÕâÒ»Óï¾ä£¬¾ÍÔÚÄÚÖÃÊý×é±äÁ¿@INCÖ¸¶¨µÄĿ¼ÖÐѰÕÒÎļþmyfile.pl¡£Èç¹ûÕÒµ½ÁË£¬¸ÃÎļþÖеÄÓï¾ä¾Í±»Ö´ÐУ¬·ñÔò³ÌÐòÖÕÖ¹²¢Êä³ö´íÎóÐÅÏ¢£º
£  Can't find myfile.pl in @INC
£  ×÷Ϊ×Ó³ÌÐòµ÷ÓòÎÊý£¬ÎļþÖÐ×îºóÒ»¸ö±í´ïʽµÄÖµ³ÉΪ·µ»ØÖµ£¬requireº¯Êý²é¿´ÆäÊÇ·ñΪÁ㣬ÈôΪÁãÔòÖÕÖ¹¡£ÀýÈçmyfile.pl×îºóµÄÓï¾äÊÇ£º
£  print ("hello, world!\n";
£  $var = 0;
£  ÒòΪ×îºóµÄÓï¾äֵΪÁ㣬Perl½âÊÍÆ÷Êä³öÏÂÁдíÎóÐÅÏ¢²¢ÍƳö£º
£  myfile.pl did not reture true value
£  ¿ÉÒÔÓüòµ¥±äÁ¿»òÊý×éÔªËØµÈÏòrequire´«µÝ²ÎÊý£¬È磺

@reqlist = ("file1.pl", "file2.pl", "file3.pl";
require ($reqlist[$0]);
require ($reqlist[$1]);
require ($reqlist[$2]);
£  »¹¿ÉÒÔ²»Ö¸¶¨ÎļþÃû£¬¼´£º
£  require;
£  Õâʱ£¬±äÁ¿$_µÄÖµ¼´×÷ΪÎļþÃû´«µÝ¸ørequire¡£
£  ×¢£ºÈç¹û@INCÖÐÓжà¸öĿ¼Öк¬ÓÐͬһ¸öÎļþ£¬ÔòÖ»ÓеÚÒ»¸ö±»°üº¬¡£
1¡¢requireº¯ÊýºÍ×Ó³ÌÐò¿â
£  ÓÃrequireº¯Êý¿ÉÒÔ´´½¨¿ÉÓÃÓÚËùÓÐPerl³ÌÐòµÄ×Ó³ÌÐò¿â£¬²½ÖèÈçÏ£º

a¡¢È·¶¨´æÖü×Ó³ÌÐò¿âµÄĿ¼
b¡¢½«×Ó³ÌÐò³éÈ¡·Åµ½µ¥¶ÀµÄÎļþÖУ¬½«Îļþ·Åµ½×Ó³ÌÐò¿âĿ¼
c¡¢Ã¿¸öÎļþĩβ¼ÓÒ»¾ä·ÇÁãÖµµÄÓï¾ä£¬×î¼òµ¥µÄ°ì·¨ÊÇÓï¾ä 1;
d¡¢ÔÚÖ÷³ÌÐòÖÐÓÃrequire°üº¬Ò»¸ö»ò¶à¸öËùÐèµÄÎļþ¡£
e¡¢ÔËÐÐÖ÷³ÌÐòʱ£¬Óà -I Ñ¡ÏîÖ¸¶¨×Ó³ÌÐò¿âĿ¼£¬»òÕßÔÚµ÷ÓÃrequireǰ½«¸ÃĿ¼Ìí¼Óµ½@INCÊý×éÖС£
£  ÀýÈ磺¼ÙÉèĿ¼/u/perldirÖдæÓÐÄãµÄPerl×Ó³ÌÐò¿â£¬×Ó³ÌÐòmysub´æÖüÔÚÎļþmysub.plÖС£ÏÖÔÚÀ´°üº¬ÉϸÃÎļþ£º
£  unshift (@INC, "/u/perldir";
£  require ("mysub.pl";
£  ¶ÔunshiftµÄµ÷ÓðÑĿ¼/u/perldirÌí¼Óµ½@INCÊý×飬¶ÔrequireµÄµ÷Óý«mysub.plÎļþµÄÄÚÈݰüº¬½øÀ´×÷Ϊ³ÌÐòµÄÒ»²¿·Ö¡£
×¢Ò⣺

1¡¢Ó¦¸ÃʹÓÃunshiftÀ´Ïò@INCÖÐÌí¼ÓĿ¼£¬¶ø²»ÊÇpush¡£ÒòΪpushÔö¼Óµ½@INCµÄĩ⣬Ôò¸ÃĿ¼½«±»×îºóËÑѰ¡£
2¡¢Èç¹ûÄãµÄ¿âÎļþÃûÓë/usr/local/lib/perlÖеÄijÎļþͬÃû£¬Ôò²»»á±»°üº¬½øÀ´£¬ÒòΪrequireÖ»°üº¬Í¬ÃûÎļþÖеĵÚÒ»¸ö¡£
2¡¢ÓÃrequireÖ¸¶¨Perl°æ±¾
£  Perl 5ÖУ¬¿ÉÒÔÓÃrequireÓï¾äÀ´Ö¸¶¨³ÌÐòÔËÐÐËùÐèµÄPerl°æ±¾¡£µ±Perl½âÊÍÆ÷¿´µ½requireºó¸ú×ÅÊý×Öʱ£¬ÔòÖ»ÓÐÆä°æ±¾¸ßÓÚ»òµÈÓÚ¸ÃÊý×Öʱ²ÅÔËÐиóÌÐò¡£ÀýÈ磬ÏÂÃæÓï¾ä±íÃ÷Ö»ÓÐPerl½âÊÍÆ÷Ϊ5.001°æ»ò¸ü¸ßʱ²ÅÔËÐиóÌÐò£º
£  require 5.001;
¶þ¡¢°ü
£  Perl³ÌÐò°Ñ±äÁ¿ºÍ×Ó³ÌÐòµÄÃû³Æ´æÖüµ½·ûºÅ±íÖУ¬perlµÄ·ûºÅ±íÖÐÃû×ֵļ¯ºÏ¾Í³ÆÎª°ü(package)¡£
1¡¢°üµÄ¶¨Òå
£  ÔÚÒ»¸ö³ÌÐòÖпÉÒÔ¶¨Òå¶à¸ö°ü£¬Ã¿¸ö°üÓÐÒ»¸öµ¥¶ÀµÄ·ûºÅ±í£¬¶¨ÒåÓ﷨Ϊ£º
£  package mypack;
£  ´ËÓï¾ä¶¨ÒåÒ»¸öÃûΪmypackµÄ°ü£¬´Ó´ËÒÔºó¶¨ÒåµÄËùÓбäÁ¿ºÍ×Ó³ÌÐòµÄÃû×Ö¶¼´æÖüÔڸðü¹ØÁªµÄ·ûºÅ±íÖУ¬Ö±µ½Óöµ½ÁíÒ»¸öpackageÓï¾äΪֹ¡£
£  ÿ¸ö·ûºÅ±íÓÐÆä×Ô¼ºµÄÒ»×é±äÁ¿¡¢×Ó³ÌÐòÃû£¬¸÷×éÃû×ÖÊDz»Ïà¹ØµÄ£¬Òò´Ë¿ÉÒÔÔÚ²»Í¬µÄ°üÖÐʹÓÃÏàͬµÄ±äÁ¿Ãû£¬¶ø´ú±íµÄÊDz»Í¬µÄ±äÁ¿¡£È磺

$var = 14;
package mypack;
$var = 6;
£  µÚÒ»¸öÓï¾ä´´½¨±äÁ¿$var²¢´æÖüÔÚmain·ûºÅ±íÖУ¬µÚÈý¸öÓï¾ä´´½¨ÁíÒ»¸öͬÃû±äÁ¿$var²¢´æÖüÔÚmypack°üµÄ·ûºÅ±íÖС£
2¡¢ÔÚ°ü¼äÇл»
£  ÔÚ³ÌÐòÀï¿ÉÒÔËæÊ±ÔÚ°ü¼äÀ´»ØÇл»£¬È磺

1: #!/usr/local/bin/perl
2:
3: package pack1;
4: $var = 26;
5: package pack2;
6: $var = 34;
7: package pack1;
8: print ("$var\n";
£  ÔËÐнá¹ûÈçÏ£º

$ program
26
$
£  µÚÈýÐж¨ÒåÁ˰üpack1£¬µÚËÄÐд´½¨±äÁ¿$var£¬´æÖüÔÚ°üpack1µÄ·ûºÅ±íÖУ¬µÚÎåÐж¨Òåаüpack2£¬µÚÁùÐд´½¨ÁíÒ»¸ö±äÁ¿$var£¬´æÖüÔÚ°üpack2µÄ·ûºÅ±íÖС£ÕâÑù¾ÍÓÐÁ½¸ö¶ÀÁ¢µÄ$var£¬·Ö±ð´æÖüÔÚ²»Í¬µÄ°üÖС£µÚÆßÐÐÓÖÖ¸¶¨pack1Ϊµ±Ç°°ü£¬ÒòΪ°üpack1ÒѾ­¶¨Ò壬ÕâÑù£¬ËùÓбäÁ¿ºÍ×Ó³ÌÐòµÄ¶¨ÒåºÍµ÷Óö¼Îª¸Ã°üµÄ·ûºÅ±íÖдæÖüµÄÃû×Ö¡£Òò´ËµÚ°ËÐжÔ$varµÄµ÷ÓÃΪpack1°üÖеÄ$var£¬ÆäֵΪ26¡£
3¡¢main°ü
£  ´æÖü±äÁ¿ºÍ×Ó³ÌÐòµÄÃû×ÖµÄȱʡ·ûºÅ±íÊÇÓëÃûΪmainµÄ°üÏà¹ØÁªµÄ¡£Èç¹ûÔÚ³ÌÐòÀﶨÒåÁËÆäËüµÄ°ü£¬µ±ÄãÏëÇл»»ØÈ¥Ê¹ÓÃȱʡµÄ·ûºÅ±í£¬¿ÉÒÔÖØÐÂÖ¸¶¨main°ü£º
£  package main;
£  ÕâÑù£¬½ÓÏÂÀ´µÄ³ÌÐò¾ÍºÃÏó´Óû¶¨Òå¹ý°üÒ»Ñù£¬±äÁ¿ºÍ×Ó³ÌÐòµÄÃû×ÖÏóͨ³£ÄÇÑù´æÖü¡£
4¡¢°üµÄÒýÓÃ
£  ÔÚÒ»¸ö°üÖпÉÒÔÒýÓÃÆäËü°üÖеıäÁ¿»ò×Ó³ÌÐò£¬·½·¨ÊÇÔÚ±äÁ¿ÃûÇ°Ãæ¼ÓÉϰüÃûºÍÒ»¸öµ¥ÒýºÅ£¬È磺

package mypack;
$var = 26;
package main;
print ("$mypack'var\n";
£  ÕâÀ$mypack'varΪmypack°üÖеıäÁ¿$var¡£
£  ×¢Ò⣺ÔÚPerl 5ÖУ¬°üÃûºÍ±äÁ¿ÃûÓÃ˫ðºÅ¸ô¿ª£¬¼´$mypack::var¡£µ¥ÒýºÅÒýÓõķ½Ê½ÈÔȻ֧³Ö£¬µ«½«À´µÄ°æ±¾ÖÐδ±ØÖ§³Ö¡£
5¡¢Ö¸¶¨ÎÞµ±Ç°°ü
£  ÔÚPerl 5ÖУ¬¿ÉÒÔÓÃÈçÏÂÓï¾äÖ¸¶¨ÎÞµ±Ç°°ü£º
£ £ package;
£  Õâʱ£¬ËùÓеıäÁ¿±ØÐëÃ÷È·Ö¸³öËùÊô°üÃû£¬·ñÔò¾ÍÎÞЧ--´íÎó¡£
£ £ $mypack::var = 21; #ok
£ £ $var = 21;£  #error - no current package
£  ÕâÖÖÇé¿öÖ±µ½ÓÃpackageÓï¾äÖ¸¶¨µ±Ç°°üΪֹ¡£
6¡¢°üºÍ×Ó³ÌÐò
£  °üµÄ¶¨ÒåÓ°Ïìµ½³ÌÐòÖеÄËùÓÐÓï¾ä£¬°üÀ¨×Ó³ÌÐò£¬È磺

package mypack;
subroutine mysub {
  local ($myvar);
  # stuff goes here
}
£  ÕâÀmysubºÍmyvar¶¼ÊǰümypackµÄÒ»²¿·Ö¡£ÔÚ°ümypackÍâµ÷ÓÃ×Ó³ÌÐòmysub£¬ÔòÒªÖ¸¶¨°ü£º$mypack'mysub¡£
£  ¿ÉÒÔÔÚ×Ó³ÌÐòÖÐÇл»°ü£º

package pack1;
subroutine mysub {
  $var1 = 1;
  package pack2;
  $var1 = 2;
}
£  Õâ¶Î´úÂë´´½¨ÁËÁ½¸ö±äÁ¿$var1£¬Ò»¸öÔÚ°üpack1ÖУ¬Ò»¸öÔÚ°üpack2ÖУ¬°üÖеľÖÓò±äÁ¿Ö»ÄÜÔÚÆä¶¨ÒåµÄ×Ó³ÌÐòµÈÓï¾ä¿éÖÐʹÓã¬ÏñÆÕͨµÄ¾ÖÓò±äÁ¿Ò»Ñù¡£
7¡¢Óðü¶¨Òå˽ÓÐÊý¾Ý
£  °ü×îͨ³£µÄÓÃ;ÊÇÓÃÔÚº¬ÓÐ×Ó³ÌÐòºÍ×Ó³ÌÐòËùʹÓõÄÈ«¾Ö±äÁ¿µÄÎļþÖУ¬Îª×Ó³ÌÐò¶¨ÒåÕâÑùµÄ°ü£¬¿ÉÒÔ±£Ö¤×Ó³ÌÐòʹÓõÄÈ«¾Ö±äÁ¿²»¿ÉÔÚÆäËüµØ·½Ê¹Óã¬ÕâÑùµÄÊý¾Ý¼´ÎªË½ÓÐÊý¾Ý¡£¸ü½øÒ»²½£¬¿ÉÒÔ±£Ö¤°üÃû²»¿ÉÔÚÆäËüµØ·½Ê¹Óá£Ë½ÓÐÊý¾ÝÀý£º

1 : package privpack;
2 : $valtoprint = 46;
3 :
4 : package main;
5 : # This function is the link to the outside world.
6 : sub printval {
7 :£  &privpack'printval();
8 : }
9 :
10: package privpack;
11: sub printval {
12:£  print ("$valtoprint\n";
13: }
14:
15: package main;
16: 1; # return value for require
£  ´Ë×Ó³ÌÐòÖ»ÓÐÔÚµ÷ÓÃprintvalºó²ÅÄܲúÉúÊä³ö¡£
£  ¸ÃÎļþ·ÖΪÁ½¸ö²¿·Ö£ºÓëÍâ½çÁªÏµµÄ²¿·ÖºÍ˽Óв¿·Ö¡£Ç°ÕßΪȱʡµÄmain°ü£¬ºóÕßΪ°üprivpack¡£µÚ6~8Ðж¨ÒåµÄ×Ó³ÌÐòprintval¿É±»ÆäËü³ÌÐò»ò×Ó³ÌÐòµ÷Óá£printvalÊä³ö±äÁ¿$valtoprintµÄÖµ£¬´Ë±äÁ¿½öÔÚ°üprivpackÖж¨ÒåºÍʹÓᣵÚ15¡¢16ÐÐÈ·±£Æä±»ÆäËü³ÌÐòÓÃrequireÓï¾ä°üº¬ºó¹¤×÷Õý³££¬15Ðн«µ±Ç°°üÉèÖûØÈ±Ê¡°ümain£¬16Ðзµ»Ø·ÇÁãֵʹrequire²»±¨´í¡£
8¡¢°üºÍϵͳ±äÁ¿
£  ÏÂÁбäÁ¿¼´Ê¹´ÓÆäËü°üÖе÷Óã¬Ò²ÔÚmain°üÖÐÆð×÷Óãº

Îļþ±äÁ¿STDIN, STDOUT, STDERR ºÍ ARGV
±äÁ¿%ENV, %INC, @INC, $ARGV ºÍ @ARGV
ÆäËüº¬ÓÐÌØÊâ×Ö·ûµÄϵͳ±äÁ¿
9¡¢·ÃÎÊ·ûºÅ±í
£  ÔÚ³ÌÐòÖвéÕÒ·ûºÅ±í¿ÉÓÃÊý×é%_package£¬´Ë´¦packageΪÏë·ÃÎʵķûºÅ±íËùÊôµÄ°üÃû¡£ÀýÈç%_mainº¬ÓÐȱʡµÄ·ûºÅ±í¡£
£  ͨ³£²»ÐèÒªÇ××Ô²éÕÒ·ûºÅ±í¡£

Èý¡¢Ä£¿é
£  ¶àÊý´óÐͳÌÐò¶¼·Ö¸î³É¶à¸ö²¿¼þ£¬Ã¿Ò»²¿¼þͨ³£º¬ÓÐÒ»¸ö»ò¶à¸ö×Ó³ÌÐò¼°Ïà¹ØµÄ±äÁ¿£¬Ö´ÐÐÌØ¶¨µÄÒ»¸ö»ò¶à¸öÈÎÎñ¡£¼¯ºÏÁ˱äÁ¿ºÍ×Ó³ÌÐòµÄ²¿¼þ³ÆÎª³ÌÐòÄ£¿é¡£
1¡¢´´½¨Ä£¿é
£  Perl 5ÖÐÓðüÀ´´´½¨Ä£¿é£¬·½·¨ÊÇ´´½¨°ü²¢½«Ö®´æÔÚͬÃûµÄÎļþÖС£ÀýÈ磬ÃûΪMymodultµÄ°ü´æÖüÔÚÎļþMymodult.pmÖУ¨À©Õ¹Ãû.pm±íʾPerl Module£©¡£ÏÂÀýµÄÄ£¿éMymodultº¬ÓÐ×Ó³ÌÐòmyfunc1ºÍmyfunc2¼°±äÁ¿$myvar1ºÍ$myvar2¡£

1 : #!/usr/local/bin/perl
2 :
3 : package Mymodule;
4 : require Exporter;
5 : @ISA = qw(Exporter);
6 : @EXPORT = qw(myfunc1 myfunc2);
7 : @EXPORT_OK = qw($myvar1 $myvar2);
8 :
9 : sub myfunc1 {
10:£  $myvar1 += 1;
11: }
12:
13: sub myfunc2 {
14:£  $myvar2 += 2;
15: }
£  µÚ3~7ÐÐÊDZê×¼µÄPerlÄ£¿é¶¨Ò巽ʽ¡£µÚ3Ðж¨Òå°ü£¬µÚ4Ðаüº¬ÄÚÖÃPerlÄ£¿éExporter£¬6¡¢7ÐнøÐÐ×Ó³ÌÐòºÍ±äÁ¿µÄÊä³öÒÔÓëÍâ½çÁªÏµ¡£µÚ6Ðд´½¨ÃûΪ@EXPORTµÄÌØÊâÊý×飬¸ÃÊý×éÖеÄ×Ó³ÌÐò¿ÉÒÔ±»ÆäËü³ÌÐòµ÷Óã¬ÕâÀmyfunc1ºÍmyfunc2¿ÉÒÔ±»·ÃÎÊ¡£ÆäËüÈκÎÔÚÄ£¿éÖж¨Ò嵫ûÓи³¸øÊý×é@EXPORTµÄ×Ó³ÌÐò¶¼ÊÇ˽Óеģ¬Ö»ÄÜÔÚÄ£¿éÄÚ²¿µ÷ÓᣵÚ7Ðд´½¨ÁíÒ»¸öÃûΪ@EXPORT_OKµÄÌØÊâÊý×飬ÆäÖк¬Óпɱ»Íⲿ³ÌÐò·ÃÎʵıäÁ¿£¬ÕâÀﺬÓÐ$myvar1ºÍ$myvar2¡£
2¡¢µ¼ÈëÄ£¿é
£  ½«Ä£¿éµ¼ÈëÄãµÄPerl³ÌÐòÖÐʹÓÃuseÓï¾ä£¬ÈçϾ䵼ÈëÁËMymoduleÄ£¿é£º
£ £ use Mymodule;
£  ÕâÑù£¬Ä£¿éMymoduleÖеÄ×Ó³ÌÐòºÍ±äÁ¿¾Í¿ÉÒÔʹÓÃÁË¡£
£  È¡Ïûµ¼ÈëÄ£¿éʹÓÃnoÓï¾ä£¬ÈçϾäÈ¡ÏûÁËMymoduleÄ£¿éµÄµ¼È룺
£ £ no Mymodule;
£  ÏÂÃæ¿´Ò»¸öµ¼ÈëÄ£¿éºÍÈ¡Ïûµ¼ÈëµÄÀý×Ó£¬Ê¹ÓÃintegerÄ£¿éÒªÇóËùÓÐÊý×ÖÔËËã»ùÓÚÕûÊý£¬¸¡µãÊýÔÚÔËËãǰ¾ù±»×ª»¯ÎªÕûÊý¡£

1: #!/usr/local/bin/perl
2:
3: use integer;
4: $result = 2.4 + 2.4;
5: print ("$result\n";
6:
7: no integer;
8: $result = 2.4 + 2.4;
9: print ("$result\n";
£  ³ÌÐòÊä³öÈçÏ£º

$ program
4
4.8
$
£  Èç¹ûuse»ònoÓï¾ä³öÏÖÔÚÓï¾ä¿éÖУ¬ÔòÖ»ÔڸÿéµÄÓÐЧ·¶Î§ÄÚÆð×÷Óã¬È磺

use integer;
$result1 = 2.4 + 2.4;
if ($result1 == 4) {
no integer;
$result2 = 3.4 + 3.4;
}
$result3 = 4.4 + 4.4;
£  ½á¹ûÊä³öÈçÏ£º

4
6.8
8
£  ÕâÀnoÓï¾äÖ»ÔÚifÓï¾äÖÐÓÐЧ£¬³öÁËifÓï¾äÈÔʹÓÃintegerÄ£¿é£¬Òò´Ë4.4ÔÚ×ö¼Ó·¨Ç°±»×ª»¯³ÉÁË4¡£
3¡¢Ô¤¶¨ÒåÄ£¿é
£  Perl 5ÌṩÁËÐí¶àÓÐÓõÄÔ¤¶¨ÒåÄ£¿é£¬¿ÉÒÔÓÃuseµ¼ÈëºÍnoÓï¾äÈ¡Ïû¡£ÏÂÃæÊÇ¿âÖÐ×îÓÐÓõÄһЩģ¿é£º

integerʹÓÃÕûÊýÔËËã
Diagnostics£  Êä³ö½Ï¶àµÄÕï¶ÏÐÅÏ¢£¨¾¯¸æ£©
EnglishÔÊÐíÓ¢ÎÄÃûÓÃ×÷ϵͳ±äÁ¿µÄ±ðÃû
Envµ¼Èë»·¾³±äÁ¿µÄPerlÄ£¿é
POSIXPOSIX±ê×¼£¨IEEE 1003.1£©µÄPerl½Ó¿Ú£ 
Socket×°ÔØCÓïÑÔµÄÌ×½Ó×Ö´¦Àí»úÖÆ

£  PerlÎĵµÖÐÓÐÍêÕûµÄÔ¤¶¨ÒåÄ£¿éÁÐ±í¡£
£  ×¢£ºÊÀ½ç¸÷µØµÄPerl 5Óû§Ð´ÁËÐí¶àÓÐÓõÄÄ£¿é£¬CPAN(Comprehensive Perl Archive Network)µÄPerlÎĵµÓÐÆäÍêÕûµÄÁÐ±í¡£¹ØÓÚCPANµÄ¸ü¶àÐÅÏ¢¼ûÆäÍøÖ·£º_blank tppabs="http://www.perl.com/perl/CPAN/README.html">http://www.perl.com/perl/CPAN/README.html¡£
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
8Â¥2005-06-14 19:24:54
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

¸½Â¼:
Ò»¡¢½ø³Ì´¦Àíº¯Êý

1¡¢½ø³ÌÆô¶¯º¯Êý

º¯ÊýÃûeval
µ÷ÓÃÓï·¨eval(string)
½â˵½«string¿´×÷PerlÓï¾äÖ´ÐС£
ÕýÈ·Ö´Ðкó£¬ÏµÍ³±äÁ¿$@Ϊ¿Õ´®£¬Èç¹ûÓдíÎó£¬$@ÖÐΪ´íÎóÐÅÏ¢¡£
Àý×Ó$print = "print (\"hello,world\\n\");";
eval ($print);
½á¹ûÊä³öhello, world

º¯ÊýÃûsystem
µ÷ÓÃÓï·¨system(list)
½â˵listÖеÚÒ»¸öÔªËØÎª³ÌÐòÃû£¬ÆäÓàΪ²ÎÊý¡£
systemÆô¶¯Ò»¸ö½ø³ÌÔËÐгÌÐò²¢µÈ´ýÆä½áÊø£¬³ÌÐò½áÊøºó´íÎó´úÂë×óÒÆ°Ëλ³ÉΪ·µ»ØÖµ¡£
Àý×Ó@proglist = ("echo", "hello,world!");
system(@proglist);
½á¹ûÊä³öhello, world!

º¯ÊýÃûfork
µ÷ÓÃÓï·¨procid = fork();
½â˵´´½¨³ÌÐòµÄÁ½¸ö¿½±´--¸¸½ø³ÌºÍ×Ó½ø³Ì--ͬʱÔËÐС£×Ó½ø³Ì·µ»ØÁ㣬¸¸½ø³Ì·µ»Ø·ÇÁãÖµ£¬´ËֵΪ×Ó³ÌÐòµÄ½ø³ÌIDºÅ¡£
Àý×Ó$retval = fork();
if ($retval == 0) {
  # this is the child process
  exit; # this terminates the child process
} else {
  # this is the parent process
}
½á¹ûÊä³öÎÞ

º¯ÊýÃûpipe
µ÷ÓÃÓï·¨pipe (infile, outfile);
½â˵ÓëforkºÏÓ㬸ø¸¸½ø³ÌºÍ×Ó½ø³ÌÌṩͨÐŵķ½Ê½¡£Ë͵½outfileÎļþ±äÁ¿µÄÐÅÏ¢¿ÉÒÔͨ¹ýinfileÎļþ±äÁ¿¶ÁÈ¡¡£²½Ö裺
1¡¢µ÷ÓÃpipe
2¡¢ÓÃfork½«³ÌÐò·Ö³É¸¸½ø³ÌºÍ×Ó½ø³Ì
3¡¢Ò»¸ö½ø³Ì¹Øµôinfile£¬ÁíÒ»¸ö¹Øµôoutfile
Àý×Ópipe (INPUT, OUTPUT);
$retval = fork();
if ($retval != 0) {
  # this is the parent process
  close (INPUT);
  print ("Enter a line of input:\n");
  $line = ;
  print OUTPUT ($line);
} else {
  # this is the child process
  close (OUTPUT);
  $line = ;
  print ($line);
  exit (0);
}

½á¹ûÊä³ö$
program
Enter a line of input:
Here is a test line
Here is a test line
$

º¯ÊýÃûexec
µ÷ÓÃÓï·¨exec (list);
½â˵ÓësystemÀàËÆ£¬Çø±ðÊÇÆô¶¯Ð½ø³Ìǰ½áÊøµ±Ç°³ÌÐò¡£³£ÓëforkºÏÓ㬵±fork·Ö³ÉÁ½¸ö½ø³Ìºó£¬×Ó½ø³ÌÓÃexecÆô¶¯ÁíÒ»¸ö³ÌÐò¡£
Àý×Ó£ 
½á¹ûÊä³ö

º¯ÊýÃûsyscall
µ÷ÓÃÓï·¨syscall (list);
½â˵µ÷ÓÃϵͳº¯Êý£¬listµÚÒ»¸öÔªËØÊÇϵͳµ÷ÓÃÃû£¬ÆäÓàΪ²ÎÊý¡£
Èç¹û²ÎÊýÊÇÊý×Ö£¬¾Íת»¯³ÉCµÄÕûÐÍÊý(type int)¡£·ñÔò´«µÝ×Ö·û´®µÄÖ¸Õë¡£Ïê¼ûUNIXµÄ°ïÖú»òPerlÎĵµ¡£
ʹÓÃsyscall±ØÐë°üº¬Îļþsyscall.pl£¬¼´£º
require ("syscall.ph");
Àý×Ó
½á¹ûÊä³ö

2¡¢½ø³ÌÖÕÖ¹º¯Êý


º¯ÊýÃûdie
µ÷ÓÃÓï·¨die (message);
½â˵ÖÕÖ¹³ÌÐò²¢ÏòSTDERRÊä³ö´íÎóÐÅÏ¢¡£message¿ÉÒÔΪ×Ö·û´®»òÁÐ±í¡£Èç¹û×îºóÒ»¸ö²ÎÊý²»°üº¬»»Ðзû£¬Ôò³ÌÐòÎļþÃûºÍÐкÅÒ²±»Êä³ö¡£
Àý×Ódie ("Cannot open input file");
½á¹ûÊä³öCannot open input file at myprog line 6.

º¯ÊýÃûwarn
µ÷ÓÃÓï·¨warn (message);
½â˵ÓëdieÀàËÆ£¬Çø±ðÊDz»ÖÕÖ¹³ÌÐò¡£
Àý×Ówarn("Danger! Danger!\n");
½á¹ûÊä³öDanger! Danger!

º¯ÊýÃûexit
µ÷ÓÃÓï·¨exit (retcode);
½â˵ÖÕÖ¹³ÌÐò²¢Ö¸¶¨·µ»ØÖµ¡£
Àý×Óexit(2);
½á¹ûÊä³öÎÞ

º¯ÊýÃûkill
µ÷ÓÃÓï·¨kill (signal, proclist);
½â˵¸øÒ»×é½ø³Ì·¢ËÍÐźš£
signalÊÇ·¢Ë͵ÄÊý×ÖÐźţ¬9Ϊɱµô½ø³Ì¡£
proclistÊǽø³ÌIDÁÐ±í¡£Ïê¼ûkillµÄUNIX°ïÖú¡£
Àý×Ó
½á¹ûÊä³ö

3¡¢½ø³Ì¿ØÖƺ¯Êý

º¯ÊýÃûsleep
µ÷ÓÃÓï·¨sleep (time);
½â˵½«³ÌÐòÔÝÍ£Ò»¶Îʱ¼ä¡£timeÊÇÍ£Ö¹µÄÃëÊý¡£·µ»ØÖµÎªÊµ¼ÊÍ£Ö¹µÄÃëÊý¡£
Àý×Ósleep (5);
½á¹ûÊä³öÎÞ

º¯ÊýÃûwait
µ÷ÓÃÓï·¨procid = wait();
½â˵ÔÝÍ£³ÌÐòÖ´ÐУ¬µÈ´ý×Ó½ø³ÌÖÕÖ¹¡£
²»ÐèÒª²ÎÊý£¬·µ»ØÖµÎª×Ó½ø³ÌID£¬Èç¹ûûÓÐ×Ó½ø³Ì£¬·µ»Ø-1¡£
Àý×Ó
½á¹ûÊä³ö

º¯ÊýÃûwaitpid
µ÷ÓÃÓï·¨waitpid (procid, waitflag);
½â˵ÔÝÍ£³ÌÐòÖ´ÐУ¬µÈ´ýÌØ¶¨µÄ×Ó½ø³ÌÖÕÖ¹¡£procidΪµÈ´ýµÄ½ø³ÌID
Àý×Ó$procid = fork();
if ($procid == 0) {
  # this is the child process
  print ("this line is printed first\n");
  exit(0);
} else {
  # this is the parent process
  waitpid ($procid, 0);
  print ("this line is printed last\n");
}
½á¹ûÊä³ö$ program
this line is printed first
this line is printed last
$

4¡¢ÆäËü¿ØÖƺ¯Êý

º¯ÊýÃûcaller
µ÷ÓÃÓï·¨subinfo = caller();
½â˵·µ»Øµ÷ÓÃÕߵijÌÐòÃûºÍÐкţ¬ÓÃÓÚPerl Debugger¡£
·µ»ØÖµÎªÈýÔªËØµÄÁÐ±í£º
1¡¢µ÷Óô¦µÄ°üÃû
2¡¢µ÷ÓÃÕßÎļþÃû
3¡¢µ÷Óô¦µÄÐкÅ
Àý×Ó
½á¹ûÊä³ö

º¯ÊýÃûchroot
µ÷ÓÃÓï·¨chroot (dir);
½â˵¸Ä±ä³ÌÐòµÄ¸ùĿ¼£¬Ïê¼ûchroot°ïÖú¡£
Àý×Ó
½á¹ûÊä³ö

º¯ÊýÃûlocal
µ÷ÓÃÓï·¨local($variable);
½â˵ÔÚÓï¾ä¿é(ÓÉ´óÀ¨ºÅ°üΧµÄÓï¾ä¼¯ºÏ)Öж¨Òå¾ÖÓò±äÁ¿£¬½öÔÚ´ËÓï¾ä¿éÖÐÆð×÷Óã¬¶ÔÆäµÄ¸Ä±ä²»¶Ô¿éÍâͬÃû±äÁ¿Ôì³ÉÓ°Ïì¡£
ǧÍò²»ÒªÔÚÑ­»·ÖÐʹÓ㬷ñÔòÿ´ÎÑ­»·¶¼¶¨ÒåÒ»¸öеľÖÓò±äÁ¿£¡
Àý×Ó
½á¹ûÊä³ö

º¯ÊýÃûtimes
µ÷ÓÃÓï·¨timelist = times
½â˵·µ»Ø¸Ã³ÌÐò¼°ËùÓÐ×Ó½ø³ÌÏûºÄµÄ¹¤×÷ʱ¼ä¡£
·µ»ØÖµÎªËĸö¸¡µãÊýµÄÁÐ±í£º
1¡¢³ÌÐòºÄÓõÄÓû§Ê±¼ä
2¡¢³ÌÐòºÄÓõÄϵͳʱ¼ä
3¡¢×Ó½ø³ÌºÄÓõÄÓû§Ê±¼ä
4¡¢×Ó½ø³ÌºÄÓõÄϵͳʱ¼ä
Àý×Ó
½á¹ûÊä³ö

¶þ¡¢Êýѧº¯Êý

º¯ÊýÃûsin
µ÷ÓÃÓï·¨retval = sin (value);
½â˵²ÎÊýΪ»¡¶ÈÖµ¡£

º¯ÊýÃûcos
µ÷ÓÃÓï·¨retval = cos (value);
½â˵²ÎÊýΪ»¡¶ÈÖµ¡£

º¯ÊýÃûatan2
µ÷ÓÃÓï·¨retval = atan2 (value1, value2);
½â˵ÔËËã²¢·µ»Øvalue1³ýÒÔvalue2½á¹ûµÄarctanÖµ£¬µ¥Î»Îª»¡¶È£¬·¶Î§ÔÚ-PI~PI¡£
Ó¦ÓÃÀý£º
½Ç¶Èת»¯³É»¡¶È×Ó³ÌÐò¡£sub degrees_to_radians {
  local ($degrees) = @_;
  local ($radians);11:
  $radians = atan2(1,1) * $degrees / 45;
}

º¯ÊýÃûsqrt
µ÷ÓÃÓï·¨retval = sqrt (value);
½â˵ƽ·½¸ùº¯Êý¡£valueΪ·Ç¸ºÊý¡£

º¯ÊýÃûexp
µ÷ÓÃÓï·¨retval = exp (value);
½â˵·µ»ØeµÄvalue´Î·½¡£

º¯ÊýÃûlog
µ÷ÓÃÓï·¨retval = log (value);
½â˵ÒÔeΪµ×µÄ×ÔÈ»¶ÔÊý¡£

º¯ÊýÃûabs
µ÷ÓÃÓï·¨retval = abs (value);
½â˵¾ø¶ÔÖµº¯Êý¡£(Perl 4ÖÐûÓÐ)

º¯ÊýÃûrand
µ÷ÓÃÓï·¨retval = rand (num);
½âËµËæ»úÊýº¯Êý£¬·µ»Ø0ºÍÕûÊýnumÖ®¼äµÄÒ»¸ö¸¡µãÊý¡£

º¯ÊýÃûsrand
µ÷ÓÃÓï·¨srand (value);
½â˵³õʼ»¯Ëæ»úÊýÉú³ÉÆ÷¡£±£Ö¤Ã¿´Îµ÷ÓÃrandÕæÕýËæ»ú¡£

Èý¡¢×Ö·û´®´¦Àíº¯Êý

º¯ÊýÃûindex
µ÷ÓÃÓï·¨position = index (string, substring, position);
½â˵·µ»Ø×Ó´®substringÔÚ×Ö·û´®stringÖеÄλÖã¬Èç¹û²»´æÔÚÔò·µ»Ø-1¡£²ÎÊýpositionÊÇ¿ÉÑ¡Ï±íʾƥÅäÖ®Ç°Ìø¹ýµÄ×Ö·ûÊý£¬»òÕß˵´Ó¸ÃλÖÿªÊ¼Æ¥Åä¡£

º¯ÊýÃûrindex
µ÷ÓÃÓï·¨position = rindex (string, substring, position);
½â˵ÓëindexÀàËÆ£¬Çø±ðÊÇ´ÓÓÒ¶ËÆ¥Åä¡£

º¯ÊýÃûlength
µ÷ÓÃÓï·¨num = length (string);
½â˵·µ»Ø×Ö·û´®³¤¶È£¬»òÕß˵º¬ÓÐ×Ö·ûµÄÊýÄ¿¡£

º¯ÊýÃûpos
µ÷ÓÃÓï·¨offset = pos(string);
½â˵·µ»Ø×îºóÒ»´ÎģʽƥÅäµÄλÖá£

º¯ÊýÃûsubstr
µ÷ÓÃÓï·¨substr (expr, skipchars, length)
½â˵³éÈ¡×Ö·û´®£¨»ò±í´ïʽÉú³ÉµÄ×Ö·û´®£©exprÖеÄ×Ó´®£¬Ìø¹ýskipchars¸ö×Ö·û£¬»òÕß˵´ÓλÖÃskipchars¿ªÊ¼³éÈ¡×Ó´®£¨µÚÒ»¸ö×Ö·ûλÖÃΪ0£©£¬×Ó´®³¤¶ÈΪlength£¬´Ë²ÎÊý¿ÉºöÂÔ£¬Òâζ×ÅȡʣϵÄÈ«²¿×Ö·û¡£
µ±´Ëº¯Êý³öÏÖÔÚµÈʽ×ó±ßʱ£¬expr±ØÐëΪ±äÁ¿»òÊý×éÔªËØ£¬´ËʱÆäÖв¿·Ö×Ó´®±»µÈʽÓұߵÄÖµÌæ»»¡£

º¯ÊýÃûstudy
µ÷ÓÃÓï·¨study (scalar);
½â˵ÓÃÒ»ÖÖÄÚ²¿¸ñʽÌá¸ß±äÁ¿µÄ·ÃÎÊËÙ¶È£¬Í¬Ò»Ê±¿ÌÖ»¶ÔÒ»¸ö±äÁ¿Æð×÷Óá£

º¯ÊýÃûlc
uc
µ÷ÓÃÓï·¨retval = lc(string);
retval = uc(string);
½â˵½«×Ö·û´®È«²¿×ª»»³ÉС/´óд×Öĸ¡£

º¯ÊýÃûlcfirst
ucfirst
µ÷ÓÃÓï·¨retval = lcfirst(string);
retval = ucfirst(string);
½â˵½«µÚÒ»¸ö×Öĸת»»³ÉС/´óд¡£

º¯ÊýÃûquotameta
µ÷ÓÃÓï·¨newstring = quotemeta(oldstring);
½â˵½«·Çµ¥´ÊµÄ×ÖÄ¸Ç°Ãæ¼ÓÉÏ·´Ð±Ïß(\)¡£
Óï¾ä £º $string = quotemeta($string);
µÈЧÓÚ£º$string =~ s/(\W)/\\$1/g;
³£ÓÃÓÚģʽƥÅä²Ù×÷ÖУ¬È·±£×Ö·û´®ÖÐûÓÐ×Ö·û±»¿´×÷Æ¥Åä²Ù×÷·û¡£

º¯ÊýÃûjoin
µ÷ÓÃÓï·¨join (joinstr, list);
½â˵°Ñ×Ö·û´®Áбí(Êý×é)×éºÏ³ÉÒ»¸ö³¤µÄ×Ö·û´®£¬ÔÚÿÁ½¸öÁбíÔªËØ¼ä²åÈë´®joinstr¡£

º¯ÊýÃûsprintf
µ÷ÓÃÓï·¨sprintf (string, fields);
½â˵ÓëprintfÀàËÆ£¬Çø±ðÊǽá¹û²»Êä³öµ½Îļþ£¬¶ø×÷Ϊ·µ»ØÖµ¸³¸ø±äÁ¿¡£
Àý×Ó$num = 26;
$outstr = sprintf("%d = %x hexadecimal or %o octal\n",$num, $num, $num);
print ($outstr);
½á¹ûÊä³ö26 = 1a hexadecimal or 32 octal

ËÄ¡¢±êÁ¿×ª»»º¯Êý

º¯ÊýÃûchop
µ÷ÓÃÓï·¨$lastchar = chop (var);
½â˵var¿ÉΪ±äÁ¿»òÊý×飬µ±varΪ±äÁ¿Ê±£¬×îºóÒ»¸ö×Ö·û±»É¾³ý²¢¸³¸ø$lastchar£¬µ±varΪÊý×é/Áбíʱ£¬ËùÓÐÔªËØµÄ×îºóÒ»¸ö×Ö·û±»É¾³ý£¬×îºóÒ»¸öÔªËØµÄ×îºóÒ»¸ö×Öĸ¸³¸ø$lastchar¡£

º¯ÊýÃûchomp
µ÷ÓÃÓï·¨result = chomp(var);
½â˵¼ì²é×Ö·û´®»ò×Ö·û´®ÁбíÖÐÔªËØµÄ×îºóÒ»¸ö×Ö·ûÊÇ·ñΪÓÉϵͳ±äÁ¿$/¶¨ÒåµÄÐзָô·û£¬Èç¹ûÊǾÍɾ³ý¡£·µ»ØÖµÎªÊµ¼Êɾ³ýµÄ×Ö·û¸öÊý¡£

º¯ÊýÃûcrypt
µ÷ÓÃÓï·¨result = crypt (original, salt);
½â˵ÓÃDESËã·¨¼ÓÃÜ×Ö·û´®£¬originalÊǽ«Òª¼ÓÃܵÄ×Ö·û´®£¬saltÊÇÁ½¸ö×Ö·ûµÄ×Ö·û´®£¬¶¨ÒåÈçºÎ¸Ä±äDESËã·¨£¬ÒÔʹ¸üÄѽâÂë¡£·µ»ØÖµÎª¼ÓÃܺóµÄ´®¡£

º¯ÊýÃûhex
µ÷ÓÃÓï·¨decnum = hex (hexnum);
½â˵½«Ê®Áù½øÖÆÊý(×Ö·û´®ÐÎʽ)ת»¯ÎªÊ®½øÖÆÊý¡£

º¯ÊýÃûint
µ÷ÓÃÓï·¨intnum = int (floatnum);
½â˵½«¸¡µãÊýÉáȥСÊý²¿·Öת»¯ÎªÕûÐÍÊý¡£

º¯ÊýÃûoct
µ÷ÓÃÓï·¨decnum = oct (octnum);
½â˵½«°Ë½øÖÆÊý(×Ö·û´®ÐÎʽ)»òÊ®Áù½øÖÆÊý("0x.."ÐÎʽ)ת»¯ÎªÊ®½øÖÆÊý¡£

º¯ÊýÃûord
µ÷ÓÃÓï·¨asciival = ord (char);
½â˵·µ»Øµ¥¸ö×Ö·ûµÄASCIIÖµ£¬ÓëPASCALÖÐͬÃûº¯ÊýÀàËÆ¡£

º¯ÊýÃûchr
µ÷ÓÃÓï·¨$char = chr (asciival);
½â˵·µ»ØASCIIÖµµÄÏàÓ¦×Ö·û£¬ÓëPASCALÖÐͬÃûº¯ÊýÀàËÆ¡£

º¯ÊýÃûpack
µ÷ÓÃÓï·¨formatstr = pack(packformat, list);
½â˵°ÑÒ»¸öÁбí»òÊý×éÒÔÔÚʵ¼Ê»úÆ÷´æÖü¸ñʽ»òCµÈ±à³ÌÓïÑÔʹÓõĸñʽת»¯£¨°ü×°£©µ½Ò»¸ö¼òµ¥±äÁ¿ÖС£²ÎÊýpackformat°üº¬Ò»¸ö»ò¶à¸ö¸ñʽ×Ö·û£¬ÁбíÖÐÿ¸öÔªËØ¶ÔÓ¦Ò»¸ö£¬¸÷¸ñʽ×Ö·û¼ä¿ÉÓÿոñ»òtab¸ô¿ª£¬ÒòΪpackºöÂÔ¿Õ¸ñ¡£
  ³ýÁ˸ñʽa¡¢AºÍ@Íâ£¬ÖØ¸´Ê¹ÓÃÒ»ÖÖ¸ñʽ¶à´Î¿ÉÔÚÆäºó¼Ó¸öÕûÊý£¬È磺
£ $twoints = pack ("i2", 103, 241);
  °Ñͬһ¸ñʽӦÓÃÓÚËùÓеÄÔªËØÔò¼Ó¸ö*ºÅ£¬È磺
£ $manyints = pack ("i*", 14, 26, 11, 83);
  ¶ÔÓÚaºÍA¶øÑÔ£¬ÆäºóµÄÕûÊý±íʾҪ´´½¨µÄ×Ö·û´®³¤¶È£¬Öظ´·½·¨ÈçÏ£º
£ $strings = pack ("a6" x 2, "test1", "test2");
  ¸ñʽ@µÄÇé¿ö±È½ÏÌØÊ⣬Æäºó±ØÐë¼Ó¸öÕûÊý£¬¸ÃÊý±íʾ×Ö·û´®±ØÐëµÄ³¤¶È£¬Èç¹û³¤¶È²»¹»£¬ÔòÓÿÕ×Ö·û(null)²¹×㣬È磺
£ $output = pack ("a @6 a", "test", "test2");
  packº¯Êý×î³£¼ûµÄÓÃ;ÊÇ´´½¨¿ÉÓëC³ÌÐò½»»¥µÄÊý¾Ý£¬ÀýÈçCÓïÑÔÖÐ×Ö·û´®¾ùÒÔ¿Õ×Ö·û(null)½á⣬´´½¨ÕâÑùµÄÊý¾Ý¿ÉÒÔÕâÑù×ö£º
£ $Cstring = pack ("ax", $mystring);
  Ï±íÊÇһЩ¸ñʽ×Ö·ûÓëCÖÐÊý¾ÝÀàÐ͵ĵȼ۹ØÏµ£º

×Ö·û£  µÈ¼ÛCÊý¾ÝÀàÐÍ
Cchar
ddouble
ffloat
iint
Iunsigned int (or unsigned)
llong
Lunsigned long
sshort
Sunsigned short

  ÍêÕûµÄ¸ñʽ×Ö·û¼ûÏÂ±í¡£

¸ñʽ×Ö·û£  ÃèÊö
aÓÿÕ×Ö·û(null)²¹×ãµÄ×Ö·û´®
AÓÿոñ²¹×ãµÄ×Ö·û´®
bλ´®£¬µÍλÔÚǰ
Bλ´®£¬¸ßλÔÚǰ
c´ø·ûºÅ×Ö·û£¨Í¨³£-128~127£©
CÎÞ·ûºÅ×Ö·û£¨Í¨³£8룩
dË«¾«¶È¸¡µãÊý
fµ¥¾«¶È¸¡µãÊý
hÊ®Áù½øÖÆÊý´®£¬µÍλÔÚǰ
HÊ®Áù½øÖÆÊý´®£¬¸ßλÔÚǰ
i´ø·ûºÅÕûÊý
IÎÞ·ûºÅÕûÊý
l´ø·ûºÅ³¤ÕûÊý
LÎÞ·ûºÅ³¤ÕûÊý
nÍøÂçÐò¶ÌÕûÊý
NÍøÂçÐò³¤ÕûÊý
p×Ö·û´®Ö¸Õë
s´ø·ûºÅ¶ÌÕûÊý
SÎÞ·ûºÅ¶ÌÕûÊý
uת»¯³Éuuencode¸ñʽ
vVAXÐò¶ÌÕûÊý
VVAXÐò³¤ÕûÊý
xÒ»¸ö¿Õ×Ö½Ú
X»ØÍËÒ»¸ö×Ö½Ú
@ÒÔ¿Õ×Ö½Ú(null)Ìî³ä

º¯ÊýÃûunpack
µ÷ÓÃÓï·¨@list = unpack (packformat, formatstr);
½â˵unpackÓëpack¹¦ÄÜÏà·´£¬½«ÒÔ»úÆ÷¸ñʽ´æÖüµÄֵת»¯³ÉPerlÖÐÖµµÄÁÐ±í¡£Æä¸ñʽ×Ö·ûÓëpack»ù±¾Ïàͬ£¨¼´ÉÏ±í£©£¬²»Í¬µÄÓУºA¸ñʽ½«»úÆ÷¸ñʽ×Ö·û´®×ª»¯ÎªPerl×Ö·û´®²¢È¥µôβ²¿ËùÓпոñ»ò¿Õ×Ö·û£»xÎªÌø¹ýÒ»¸ö×Ö½Ú£»@ÎªÌø¹ýһЩ×Ö½Úµ½Ö¸¶¨µÄλÖã¬Èç@4ÎªÌø¹ý4¸ö×Ö½Ú¡£ÏÂÃæ¿´Ò»¸ö@ºÍXºÏͬµÄÀý×Ó£º£ £ $longrightint = unpack ("@* X4 L", $packstring);
  ´ËÓï¾ä½«×îºóËĸö×Ö½Ú¿´×÷ÎÞ·ûºÅ³¤ÕûÊý½øÐÐת»¯¡£ÏÂÃæ¿´Ò»¸ö¶ÔuuencodeÎļþ½âÂëµÄÀý×Ó£º

1 : #!/usr/local/bin/perl
2 :
3 : open (CODEDFILE, "/u/janedoe/codefile") ||
4 : die ("Can't open input file");
5 : open (OUTFILE, ">outfile") ||
6 : die ("Can't open output file");
7 : while ($line = ) {
8 : $decoded = unpack("u", $line);
9 : print OUTFILE ($decoded);
10: }
11: close (OUTFILE);
12: close (CODEDFILE);
  µ±½«packºÍunpackÓÃÓÚuuencodeʱ£¬Òª¼Çס£¬ËäÈ»ËüÃÇÓëUNIXÖеÄuuencode¡¢uudecode¹¤¾ßËã·¨Ïàͬ£¬µ«²¢²»ÌṩÊ×ÐкÍÄ©ÐУ¬Èç¹ûÏëÓÃuudecode¶ÔÓÉpackµÄÊä³ö´´½¨µÄÎļþ½øÐнâÂ룬±ØÐëÒ²°ÑÊ×ÐкÍÄ©ÐÐÊä³ö£¨Ïê¼ûUNIXÖÐuuencode°ïÖú£©¡£


º¯ÊýÃûvec
µ÷ÓÃÓï·¨retval = vec (vector, index, bits);
½â˵¹ËÃû˼Ò壬vec¼´Ê¸Á¿(vector)º¯Êý£¬Ëü°Ñ¼òµ¥±äÁ¿vectorµÄÖµ¿´×÷¶à¿é(ά)Êý¾Ý£¬Ã¿¿éº¬Ò»¶¨ÊýÄ¿µÄ룬ºÏÆðÀ´¼´Ò»¸öʸÁ¿Êý¾Ý¡£Ã¿´ÎµÄµ÷Ó÷ÃÎÊÆäÖÐÒ»¿éÊý¾Ý£¬¿ÉÒÔ¶ÁÈ¡£¬Ò²¿ÉÒÔдÈë¡£²ÎÊýindex¾ÍÏóÊý×éϱêÒ»Ñù£¬Ìá³ö·ÃÎÊÄÄÒ»¿é£¬0ΪµÚÒ»¿é£¬ÒÀ´ÎÀàÍÆ£¬Òª×¢ÒâµÄÊÇ·ÃÎÊ´ÎÐòÊÇ´ÓÓÒµ½×óµÄ£¬¼´µÚÒ»¿éÔÚ×îÓұߡ£²ÎÊýbitsÖ¸¶¨Ã¿¿éÖеÄλÊý£¬¿ÉÒÔΪ1,2,4,8,16»ò32¡£
Àý×Ó1 : #!/usr/local/bin/perl
2 :
3 : $vector = pack ("B*", "11010011");
4 : $val1 = vec ($vector, 0, 4);
5 : $val2 = vec ($vector, 1, 4);
6 : print ("high-to-low order values: $val1 and $val2\n");
7 : $vector = pack ("b*", "11010011");
8 : $val1 = vec ($vector, 0, 4);
9 : $val2 = vec ($vector, 1, 4);
10: print ("low-to-high order values: $val1 and $val2\n");
½á¹ûhigh-to-low order values: 3 and 13
low-to-high order values: 11 and 12

º¯ÊýÃûdefined
µ÷ÓÃÓï·¨retval = defined (expr);
½â˵ÅжÏÒ»¸ö±äÁ¿¡¢Êý×é»òÊý×éµÄÒ»¸öÔªËØÊÇ·ñÒѾ­±»¸³Öµ¡£exprΪ±äÁ¿Ãû¡¢Êý×éÃû»òÒ»¸öÊý×éÔªËØ¡£
Èç¹ûÒѶ¨Ò壬·µ»ØÕ棬·ñÔò·µ»Ø¼Ù¡£

º¯ÊýÃûundef
µ÷ÓÃÓï·¨retval = undef (expr);
½â˵ȡÏû±äÁ¿¡¢Êý×é»òÊý×éÔªËØÉõÖÁ×Ó³ÌÐòµÄ¶¨Ò壬»ØÊÕÆä¿Õ¼ä¡£·µ»ØÖµÊ¼ÖÕΪ䶨ÒåÖµ£¬´ËÖµÓë¿Õ´®µÈЧ¡£

Îå¡¢Êý×éºÍÁÐ±íº¯Êý

º¯ÊýÃûgrep
µ÷ÓÃÓï·¨@foundlist = grep (pattern, @searchlist);
½â˵ÓëͬÃûµÄUNIX²éÕÒ¹¤¾ßÀàËÆ£¬grepº¯ÊýÔÚÁбíÖгéÈ¡ÓëÖ¸¶¨Ä£Ê½Æ¥ÅäµÄÔªËØ£¬²ÎÊýpatternΪÓû²éÕÒµÄģʽ£¬·µ»ØÖµÊÇÆ¥ÅäÔªËØµÄÁÐ±í¡£
Àý×Ó@list = ("This", "is", "a", "test");
@foundlist = grep(/^[tT]/, @list);
½á¹û@foundlist = ("This", "test");

º¯ÊýÃûsplice
µ÷ÓÃÓï·¨@retval = splice (@array, slipelements, length, @newlist);
½â˵£ Æ´½Óº¯Êý¿ÉÒÔÏòÁÐ±í£¨Êý×飩Öмä²åÈëÔªËØ¡¢É¾³ý×ÓÁбí»òÌæ»»×ÓÁÐ±í¡£²ÎÊýskipelementsÊÇÆ´½ÓÇ°Ìø¹ýµÄÔªËØÊýÄ¿£¬lengthÊDZ»Ìæ»»µÄÔªËØÊý£¬newlistÊǽ«ÒªÆ´½Ó½øÀ´µÄÁÐ±í¡£µ±newlistµÄ³¤¶È´óÓÚlengthʱ£¬ºóÃæµÄÔªËØ×Ô¶¯ºóÒÆ£¬·´Ö®ÔòÏòǰËõ½ø¡£Òò´Ë£¬µ±length=0ʱ£¬¾ÍÏ൱ÓÚÏòÁбíÖвåÈëÔªËØ£¬¶øÐÎÈçÓï¾ä
  splice (@array, -1, 0, "Hello");
ÔòÏòÊý×éĩβÌí¼ÓÔªËØ¡£¶øµ±newlistΪ¿Õʱ¾ÍÏ൱ÓÚɾ³ý×ÓÁÐ±í£¬Õâʱ£¬Èç¹ûlengthΪ¿Õ£¬¾Í´ÓµÚskipelements¸öÔªËØºóÈ«²¿É¾³ý£¬¶øÉ¾³ý×îºóÒ»¸öÔªËØÔòΪ£ºsplice (@array, -1);ÕâÖÖÇé¿öÏ£¬·µ»ØÖµÎª±»É¾È¥µÄÔªËØÁÐ±í¡£

º¯ÊýÃûshift
µ÷ÓÃÓï·¨element = shift (@arrayvar);
½â˵ɾȥÊý×éµÚÒ»¸öÔªËØ£¬Ê£ÏÂÔªËØÇ°ÒÆ£¬·µ»Ø±»É¾È¥µÄÔªËØ¡£²»¼Ó²ÎÊýʱ£¬È±Ê¡µØ¶Ô@ARGV½øÐвÙ×÷¡£

º¯ÊýÃûunshift
µ÷ÓÃÓï·¨count = unshift (@arrayver, elements);
½â˵×÷ÓÃÓëshiftÏà·´£¬ÔÚÊý×éarrayvar¿ªÍ·Ôö¼ÓÒ»¸ö»ò¶à¸öÔªËØ£¬·µ»ØÖµÎª½á¹û(Áбí)µÄ³¤¶È¡£µÈ¼ÛÓÚsplice (@array, 0, 0, elements);

º¯ÊýÃûpush
µ÷ÓÃÓï·¨push (@arrayvar, elements);
½â˵ÔÚÊý×éĩβÔö¼ÓÒ»¸ö»ò¶à¸öÔªËØ¡£µÈ¼ÛÓÚslice (@array, @array, 0, elements);

º¯ÊýÃûpop
µ÷ÓÃÓï·¨element = pop (@arrayvar);
½â˵Óëpush×÷ÓÃÏà·´£¬É¾È¥Áбí×îºóÒ»¸öÔªËØ£¬²¢½«Æä×÷Ϊ·µ»ØÖµ£¬µ±ÁбíÒѿգ¬Ôò·µ»Ø¡°Î´¶¨ÒåÖµ¡±(¼´¿Õ´®)¡£

º¯ÊýÃûsplit
µ÷ÓÃÓï·¨@list = split (pattern, string, maxlength);
½â˵½«×Ö·û´®·Ö¸î³ÉÒ»×éÔªËØµÄÁÐ±í¡£Ã¿Æ¥ÅäÒ»´Îpattern£¬¾Í¿ªÊ¼Ò»¸öÐÂÔªËØ£¬µ«pattern±¾Éí²»°üº¬ÔÚÔªËØÖС£maxlengthÊÇ¿ÉÑ¡Ïµ±Ö¸¶¨Ëüʱ£¬´ïµ½¸Ã³¤¶È¾Í²»Ôٷָ

º¯ÊýÃûsort
µ÷ÓÃÓï·¨@sorted = sort (@list);
½â˵°´×Öĸ´ÎÐò¸øÁбíÅÅÐò¡£

º¯ÊýÃûreverse
µ÷ÓÃÓï·¨@reversed = reverse (@list);
½â˵°´×Öĸ·´Ðò¸øÁбíÅÅÐò¡£

º¯ÊýÃûmap
µ÷ÓÃÓï·¨@resultlist = map (expr, @list);
½â˵´Ëº¯ÊýÔÚPerl5Öж¨Ò壬¿ÉÒÔ°ÑÁбíÖеĸ÷¸öÔªËØ×÷Ϊ±í´ïʽexprµÄ²Ù×÷Êý½øÐÐÔËË㣬Æä±¾Éí²»¸Ä±ä£¬½á¹û×÷Ϊ·µ»ØÖµ¡£ÔÚ±í´ïʽexprÖУ¬ÏµÍ³±äÁ¿$_´ú±í¸÷¸öÔªËØ¡£
Àý×Ó1¡¢@list = (100, 200, 300);
£ @results = map ($_+1, @list);
2¡¢@results = map (&mysub($_), @list);
½á¹û1¡¢(101, 201, 301)
2¡¢ÎÞ

º¯ÊýÃûwantarray
µ÷ÓÃÓï·¨result = wantarray();
½â˵PerlÖУ¬Ò»Ð©ÄÚÖú¯ÊýµÄÐÐΪ¸ù¾ÝÆä´¦Àí¼òµ¥±äÁ¿»¹ÊÇÊý×éÓÐËù²»Í¬£¬Èçchop¡£×Ô¶¨ÒåµÄ×Ó³ÌÐòÒ²¿ÉÒÔ¶¨ÒåÕâÑùÁ½ÖÖÐÐΪ¡£µ±×Ó³ÌÐò±»ÆÚÍû·µ»ØÁбíʱ£¬´Ëº¯Êý·µ»ØÖµÎª·ÇÁãÖµ(Õæ)£¬·ñÔòΪÁãÖµ(¼Ù)¡£
Àý×Ó1 : #!/usr/local/bin/perl
2 :
3 : @array = &mysub();
4 : $scalar = &mysub();
5 :
6 : sub mysub {
7 : if (wantarray()) {
8 : print ("true\n");
9 : } else {
10: print ("false\n");
11: }
12: }
½á¹û$program
true
false
$

Áù¡¢¹ØÁªÊý×麯Êý

º¯ÊýÃûkeys
µ÷ÓÃÓï·¨@list = keys (%assoc_array);
½â˵·µ»Ø¹ØÁªÊý×éÎÞÐòµÄϱêÁÐ±í¡£

º¯ÊýÃûvalues
µ÷ÓÃÓï·¨@list = values (%assoc_array);
½â˵·µ»Ø¹ØÁªÊý×éÎÞÐòµÄÖµÁÐ±í¡£

º¯ÊýÃûeach
µ÷ÓÃÓï·¨@pair = each (%assoc_array);
½â˵·µ»ØÁ½¸öÔªËØµÄÁбí--¼üÖµ¶Ô£¨¼´Ï±êºÍÏàÓ¦µÄÖµ£©£¬Í¬ÑùÎÞÐò¡£µ±¹ØÁªÊý×éÒѿգ¬Ôò·µ»Ø¿ÕÁÐ±í¡£

º¯ÊýÃûdelete
µ÷ÓÃÓï·¨element = delete (assoc_array_item);
½â˵ɾ³ý¹ØÁªÊý×éÖеÄÔªËØ£¬²¢½«ÆäÖµ×÷Ϊ·µ»ØÖµ¡£
Àý×Ó%array = ("foo", 26, "bar", 17");
$retval = delete ($array);
½á¹û$retval = 26;

º¯ÊýÃûexists
µ÷ÓÃÓï·¨result = exists (element);
½â˵ÔÚPerl5Öж¨Ò壬ÅжϹØÁªÊý×éÖÐÊÇ·ñ´æÔÚÄ³ÔªËØ£¬Èô´æÔÚ£¬·µ»Ø·ÇÁãÖµ(Õæ)£¬·ñÔò·µ»ØÁãÖµ(¼Ù)¡£
Àý×Ó$result = exists ($myarray);
¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
9Â¥2005-06-14 19:25:18
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ miRNA µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 301Çóµ÷¼Á +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
[¿¼ÑÐ] 268Çóµ÷¼Á +6 ºÃÔËÁ¬Ã಻¾ø 2026-03-12 7/350 2026-03-17 14:56 by ßÏßÏÓÇÓô
[¿¼ÑÐ] ²ÄÁϹ¤³Ìר˶274Ò»Ö¾Ô¸211Çóµ÷¼Á +6 Ñ¦ÔÆÅô 2026-03-15 6/300 2026-03-17 11:05 by ѧԱh26Tkc
[¿¼ÑÐ] 289Çóµ÷¼Á +6 ²½´¨¿á×Ï123 2026-03-11 6/300 2026-03-17 10:23 by Sammy2
[¿¼ÑÐ] 267Ò»Ö¾Ô¸ÄϾ©¹¤Òµ´óѧ0817»¯¹¤Çóµ÷¼Á +6 SUICHILD 2026-03-12 6/300 2026-03-17 09:24 by ÎíÉ¢ºóÏàÓölc
[¿¼ÑÐ] 326Çóµ÷¼Á +4 ŵ±´¶û»¯Ñ§½±êéê 2026-03-15 7/350 2026-03-16 17:11 by ŵ±´¶û»¯Ñ§½±êéê
[¿¼ÑÐ] ÖпÆÔº²ÄÁÏ273Çóµ÷¼Á +4 yzydy 2026-03-15 4/200 2026-03-16 15:59 by Gaodh_82
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤ Çóµ÷¼Á +13 enenenhui 2026-03-13 14/700 2026-03-16 15:19 by ÁËÁËÁËÁË¡£¡£
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÖÐʦ·¶071000£¬325Çóµ÷¼Á +6 RuitingC 2026-03-12 6/300 2026-03-16 14:50 by ¿Éµ­²»¿ÉÍü
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤Ò»Ö¾Ô¸Äϲý´óѧ327Çóµ÷¼ÁÍÆ¼ö +7 Ncdx123456 2026-03-13 8/400 2026-03-16 12:15 by karry wen
[¿¼ÑÐ] 0703 ÎïÀí»¯Ñ§µ÷¼Á +3 ÎÒ¿ÉÒÔÉϰ¶µÄ¶Ô 2026-03-13 5/250 2026-03-16 10:50 by ÎÒ¿ÉÒÔÉϰ¶µÄ¶ÔÂ
[»ù½ðÉêÇë] NSFCÉ걨ÊéÀïÉêÇëÈ˼òÀúÖдú±íÐÔÂÛÖø»¹ÐèÒªÔÚÉ걨Êé×îºóµÄ¸½¼þÀïÃæÔÙÉÏ´«Ò»±éÂð 20+5 NSFC2026ÎÒÀ´ÁË 2026-03-10 14/700 2026-03-15 23:53 by ²»¸ºÉØ»ªµÄ»¢
[¿¼ÑÐ] 297Çóµ÷¼Á +4 ѧº£Æ¯²´ 2026-03-13 4/200 2026-03-14 11:51 by ÈÈÇéɳĮ
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +4 ¿ìÀÖµÄÏã½¶ 2026-03-11 4/200 2026-03-13 22:41 by JourneyLucky
[¿¼ÑÐ] 304Çóµ÷¼Á +7 7712b 2026-03-13 7/350 2026-03-13 21:42 by peike
[¿¼ÑÐ] 329Çóµ÷¼Á +3 miaodesi 2026-03-12 4/200 2026-03-13 20:53 by 18595523086
[¿¼ÑÐ] Çóµ÷¼Á +5 Ò»¶¨ÓÐѧÉÏ- 2026-03-12 5/250 2026-03-13 18:31 by ms629
[¿¼ÑÐ] 0856»¯Ñ§¹¤³Ì280·ÖÇóµ÷¼Á +4 shenzxsn 2026-03-11 4/200 2026-03-13 11:55 by ymwdoctor
[¿¼ÑÐ] 277Çóµ÷¼Á +4 anchor17 2026-03-12 4/200 2026-03-13 11:15 by °×Ò¹ÓÆ³¤
[¿¼²©] 26¶Á²© +4 Rui135246 2026-03-12 10/500 2026-03-13 07:15 by gaobiao
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û