²Ä¤»³¹¡@¼Ò¦¡¤Ç°t

¡½¡i ²¤¶ ¡j
   ¼Ò¦¡«ü¦b¦r²Å¦ê¤¤´M§äªº¯S©w§Ç¦Cªº¦r²Å¡A¥Ñ¤Ï±×½u¥]§t¡J/def/§Y¼Ò¦¡def¡C¨ä¥Îªk¦pµ²¦X¨ç¼Æsplit±N¦r²Å¦ê¥Î¬Y¼Ò¦¡¤À¦¨¦h­Ó³æµü¡J@array = split(/ /, $line);
¡½¡i ¤Ç°t¾Þ§@²Å=~¡B!~ ¡j
   =~ÀËÅç¤Ç°t¬O§_¦¨¥\¡J$result = $var =~ /abc/;­Y¦b¸Ó¦r²Å¦ê¤¤§ä¨ì¤F¸Ó¼Ò¦¡¡A«hªð¦^«D¹s­È¡A§Ytrue¡A¤£¤Ç°t«hªð¦^0¡A§Yfalse¡C!~«h¬Û¤Ï¡C
   ³o¨â­Ó¾Þ§@²Å¾A©ó±ø¥ó±±»s¤¤¡A¦p¡J
   if ($question =~ /please/) {
     print ("Thank you for being polite!\n");
   }
   else {
     print ("That was not very polite!\n");
   }
¡½¡i ¼Ò¦¡¤¤ªº¯S®í¦r²Å ¡j
   PERL¦b¼Ò¦¡¤¤¤ä«ù¤@¨Ç¯S®í¦r²Å¡A¥i¥H°_¨ì¤@¨Ç¯S®íªº§@¥Î¡C
1¡B¦r²Å +
   +·N¨ýµÛ¤@­Ó©Î¦h­Ó¬Û¦Pªº¦r²Å¡A¦p¡J/de+f/«üdef¡Bdeef¡Bdeeeeefµ¥¡C¥¦ºÉ¶q¤Ç°tºÉ¥i¯à¦hªº¬Û¦P¦r²Å¡A¦p/ab+/¦b¦r²Å¦êabbc¤¤¤Ç°tªº±N¬Oabb¡A¦Ó¤£¬Oab¡C
   ·í¤@¦æ¤¤¦U³æµü¶¡ªºªÅ®æ¦h©ó¤@­Ó®É¡A¥i¥H¦p¤U¤À³Î¡J
     @array = split (/ +/, $line);
   ª`¡Jsplit¨ç¼Æ¨C¦¸¹J¨ì¤À³Î¼Ò¦¡¡AÁ`¬O¶}©l¤@­Ó·s³æµü¡A¦]¦¹­Y$line¥HªÅ®æ¥´ÀY¡A«h@arrayªº²Ä¤@­Ó¤¸¯À§Y¬°ªÅ¤¸¯À¡C¦ý¨ä¥i¥H°Ï¤À¬O§_¯u¦³³æµü¡A¦p­Y$line¤¤¥u¦³ªÅ®æ¡A«h@array«h¬°ªÅ¼Æ²Õ¡C¥B¤W¨Ò¤¤TAB¦r²Å³Q·í§@¤@­Ó³æµü¡Cª`·N­×¥¿¡C
2¡B¦r²Å []©M[^]
   []·N¨ýµÛ¤Ç°t¤@²Õ¦r²Å¤¤ªº¤@­Ó¡A¦p/a[0123456789]c/±N¤Ç°ta¥[¼Æ¦r¥[cªº¦r²Å¦ê¡C»P+Áp¦X¨Ï¥Î¨Ò¡J/d[eE]+f/¤Ç°tdef¡BdEf¡Bdeef¡BdEdf¡BdEEEeeeEefµ¥¡C^ªí¥Ü°£¨ä¤§¥~ªº©Ò¦³¦r²Å¡A¦p¡J/d[^deE]f/¤Ç°td¥[«De¦r²Å¥[fªº¦r²Å¦ê¡C
3¡B¦r²Å *©M?
   ¥¦­Ì»P+Ãþ¦ü¡A°Ï§O¦b©ó*¤Ç°t0­Ó¡B1­Ó©Î¦h­Ó¬Û¦P¦r²Å¡A?¤Ç°t0­Ó©Î1­Ó¸Ó¦r²Å¡C¦p/de*f/¤Ç°tdf¡Bdef¡Bdeeeefµ¥¡F/de?f/¤Ç°tdf©Îdef¡C
4¡BÂà¸q¦r²Å
   ¦pªG§A·Q¦b¼Ò¦¡¤¤¥]§t³q±`³Q¬Ý§@¯S®í·N¸qªº¦r²Å¡A¶·¦b¨ä«e¥[±×½u"\"¡C¦p¡J/\*+/¤¤\*§Yªí¥Ü¦r²Å*¡A¦Ó¤£¬O¤W­±´£¨ìªº¤@­Ó©Î¦h­Ó¦r²Åªº§t¸q¡C±×½uªºªí¥Ü¬°/\\/¡C¦bPERL5¤¤¥i¥Î¦r²Å¹ï\Q©M\E¨ÓÂà¸q¡C
5¡B¤Ç°t¥ô·N¦r¥À©Î¼Æ¦r
   ¤W­±´£¨ì¼Ò¦¡/a[0123456789]c/¤Ç°t¦r¥Àa¥[¥ô·N¼Æ¦r¥[cªº¦r²Å¦ê¡A¥t¤@ºØªí¥Ü¤èªk¬°¡J/a[0-9]c/¡AÃþ¦üªº¡A[a-z]ªí¥Ü¥ô·N¤p¼g¦r¥À¡A[A-Z]ªí¥Ü¥ô·N¤j¼g¦r¥À¡C¥ô·N¤j¤p¼g¦r¥À¡B¼Æ¦rªºªí¥Ü¤èªk¬°¡J/[0-9a-zA-Z]/¡C
6¡BÁã¼Ò¦¡
Áã´y­z
^ ©Î \A¶È¤Ç°t¦ê­º
$ ©Î \Z¶È¤Ç°t¦ê§À
\b¤Ç°t³æµüÃä¬É
\B³æµü¤º³¡¤Ç°t

   ¨Ò1¡J/^def/¥u¤Ç°t¥Hdef¥´ÀYªº¦r²Å¦ê¡A/$def/¥u¤Ç°t¥Hdefµ²§Àªº¦r²Å¦ê¡Aµ²¦X°_¨Óªº/^def$/¥u¤Ç°t¦r²Å¦êdef(?)¡C\A©M\Z¦b¦h¦æ¤Ç°t®É»P^©M$¤£¦P¡C
   ¨Ò2¡JÀËÅçÅܶq¦WªºÃþ«¬¡J
     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¡J\b¦b³æµüÃä¬É¤Ç°t¡J/\bdef/¤Ç°tdef©Mdefghiµ¥¥Hdef¥´ÀYªº³æµü¡A¦ý¤£¤Ç°tabcdef¡C/def\b/¤Ç°tdef©Mabcdefµ¥¥Hdefµ²§Àªº³æµü¡A¦ý¤£¤Ç°tdefghi¡A/\bdef\b/¥u¤Ç°t¦r²Å¦êdef¡Cª`·N¡J/\bdef/¥i¤Ç°t$defghi¡A¦]¬°$¨Ã¤£³Q¬Ý§@¬O³æµüªº³¡¤À¡C
   ¨Ò4¡J\B¦b³æµü¤º³¡¤Ç°t¡J/\Bdef/¤Ç°tabcdefµ¥¡A¦ý¤£¤Ç°tdef¡F/def\B/¤Ç°tdefghiµ¥¡F/\Bdef\B/¤Ç°tcdefg¡Babcdefghiµ¥¡A¦ý¤£¤Ç°tdef,defghi,abcdef¡C
7¡B¼Ò¦¡¤¤ªºÅܶq´À´«
   ±N¥y¤l¤À¦¨³æµü¡J
     $pattern = "[\\t ]+";
     @words = split(/$pattern/, $line);
8¡B¦r²Å­S³òÂà¸q

EÂà¸q¦r²Å´y­z­S³ò
\d¥ô·N¼Æ¦r[0-9]
\D°£¼Æ¦r¥~ªº¥ô·N¦r²Å[^0-9]
\w¥ô·N³æµü¦r²Å[_0-9a-zA-Z]
\W¥ô·N«D³æµü¦r²Å[^_0-9a-zA-Z]
\sªÅ¥Õ[ \r\t\n\f]
\S«DªÅ¥Õ[^ \r\t\n\f]

   ¨Ò¡J/[\da-z]/¤Ç°t¥ô·N¼Æ¦r©Î¤p¼g¦r¥À¡C
9¡B¤Ç°t¥ô·N¦r²Å
   ¦r²Å"."¤Ç°t°£´«¦æ¥~ªº©Ò¦³¦r²Å¡A³q±`»P*¦X¥Î¡C
10¡B¤Ç°t«ü©w¼Æ¥Øªº¦r²Å
   ¦r²Å¹ï{}«ü©w©Ò¤Ç°t¦r²Åªº¥X²{¦¸¼Æ¡C¦p¡J/de{1,3}f/¤Ç°tdef,deef©Mdeeef¡F/de{3}f/¤Ç°tdeeef¡F/de{3,}f/¤Ç°t¤£¤Ö©ó3­Óe¦bd©Mf¤§¶¡¡F/de{0,3}f/¤Ç°t¤£¦h©ó3­Óe¦bd©Mf¤§¶¡¡C
11¡B«ü©w¿ï¶µ
   ¦r²Å"|"«ü©w¨â­Ó©Î¦h­Ó¿ï¾Ü¨Ó¤Ç°t¼Ò¦¡¡C¦p¡J/def|ghi/¤Ç°tdef©Îghi¡C
   ¨Ò¡JÀËÅç¼Æ¦rªí¥Ü¦Xªk©Ê
   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+$ ¤Ç°t¤Q¶i»s¼Æ¦r¡A^-?0[xX][\da-fa-F]+$ ¤Ç°t¤Q¤»¶i»s¼Æ¦r¡C
12¡B¼Ò¦¡ªº³¡¤À­«¥Î
   ·í¼Ò¦¡¤¤¤Ç°t¬Û¦Pªº³¡¤À¥X²{¦h¦¸®É¡A¥i¥Î¬A¸¹¬A°_¨Ó¡A¥Î\n¨Ó¦h¦¸¤Þ¥Î¡A¥H²¤Æªí¹F¦¡¡J
/\d{2}([\W])\d{2}\1\d{2}/ ¤Ç°t¡J
     12-05-92
     26.11.87
     07 04 92µ¥
   ª`·N¡J/\d{2}([\W])\d{2}\1\d{2}/ ¤£¦P©ó/(\d{2})([\W])\1\2\1/ ¡A«áªÌ¥u¤Ç°t§Î¦p17-17-17ªº¦r²Å¦ê¡A¦Ó¤£¤Ç°t17-05-91µ¥¡C
13¡BÂà¸q©M¯S©w¦r²Åªº°õ¦æ¦¸§Ç
   ¶H¾Þ§@²Å¤@¼Ë¡AÂà¸q©M¯S©w¦r²Å¤]¦³°õ¦æ¦¸§Ç¡J

¯S®í¦r²Å´y­z
()¼Ò¦¡¤º¦s
+ * ? {}¥X²{¦¸¼Æ
^ $ \b \BÁã
|¿ï¶µ

14¡B«ü©w¼Ò¦¡©w¬É²Å
   ¯Ê¬Ùªº¡A¼Ò¦¡©w¬É²Å¬°¤Ï±×½u/¡A¦ý¨ä¥i¥Î¦r¥Àm¦Û¦æ«ü©w¡A¦p¡J
     m!/u/jqpublic/perl/prog1! µ¥»ù©ó/\/u\/jqpublic\/perl\/prog1/
   ª`¡J·í¥Î¦r¥À'§@¬°©w¬É²Å®É¡A¤£°µÅܶq´À´«¡F·í¥Î¯S®í¦r²Å§@¬°©w¬É²Å®É¡A¨äÂà¸q¥\¯à©Î¯S®í¥\¯à§Y¤£¯à¨Ï¥Î¡C
15¡B¼Ò¦¡¦¸§ÇÅܶq
   ¦b¼Ò¦¡¤Ç°t«á½Õ¥Î­«¥Î³¡¤Àªºµ²ªG¥i¥ÎÅܶq$n¡A¥þ³¡ªºµ²ªG¥ÎÅܶq$&¡C
     $string = "This string contains the number 25.11.";
     $string =~ /-?(\d+)\.?(\d+)/; # ¤Ç°tµ²ªG¬°25.11
     $integerpart = $1; # now $integerpart = 25
     $decimalpart = $2; # now $decimalpart = 11
     $totalpart = $&; # now totalpart = 25.11
¡½¡i ¼Ò¦¡¤Ç°t¿ï¶µ ¡j
¿ï¶µ´y­z
g¤Ç°t©Ò¦³¥i¯àªº¼Ò¦¡
i©¿²¤¤j¤p¼g
m±N¦êµø¬°¦h¦æ
o¥u½á­È¤@¦¸
s±N¦êµø¬°³æ¦æ
x©¿²¤¼Ò¦¡¤¤ªºªÅ¥Õ

1¡B¤Ç°t©Ò¦³¥i¯àªº¼Ò¦¡(g¿ï¶µ)
   @matches = "balata" =~ /.a/g; # now @matches = ("ba", "la", "ta")
   ¤Ç°tªº´`Àô¡J
   while ("balata" =~ /.a/g) {
     $match = $&;
     print ("$match\n");
   }
   µ²ªG¬°¡J
     ba
     la
     ta
   ·í¨Ï¥Î¤F¿ï¶µg®É¡A¥i¥Î¨ç¼Æpos¨Ó±±»s¤U¦¸¤Ç°tªº°¾²¾¡J
     $offset = pos($string);
     pos($string) = $newoffset;
2¡B©¿²¤¤j¤p¼g(i¿ï¶µ)¨Ò
   /de/i ¤Ç°tde,dE,De©MDE¡C
3¡B±N¦r²Å¦ê¬Ý§@¦h¦æ(m¿ï¶µ)
   ¦b¦¹±¡ªp¤U¡A^²Å¸¹¤Ç°t¦r²Å¦êªº°_©l©Î·sªº¤@¦æªº°_©l¡F$²Å¸¹¤Ç°t¥ô·N¦æªº¥½§À¡C
4¡B¥u°õ¦æ¤@¦¸Åܶq´À´«¨Ò
   $var = 1;
   $line = <STDIN>;
   while ($var < 10) {
     $result = $line =~ /$var/o;
     $line = <STDIN>;
     $var++;
   }
   ¨C¦¸§¡¤Ç°t/1/¡C
5¡B±N¦r²Å¦ê¬Ý§@³æ¦æ¨Ò
   /a.*bc/s¤Ç°t¦r²Å¦êaxxxxx \nxxxxbc¡A¦ý/a.*bc/«h¤£¤Ç°t¸Ó¦r²Å¦ê¡C
6¡B¦b¼Ò¦¡¤¤©¿²¤ªÅ®æ
   /\d{2} ([\W]) \d{2} \1 \d{2}/xµ¥»ù©ó/\d{2}([\W])\d{2}\1\d{2}/¡C
¡½¡i ´À´«¾Þ§@²Å ¡j
   »yªk¬°s/pattern/replacement/¡A¨ä®ÄªG¬°±N¦r²Å¦ê¤¤»Ppattern¤Ç°tªº³¡¤À´«¦¨replacement¡C¦p¡J
     $string = "abc123def";
     $string =~ s/123/456/; # now $string = "abc456def";
   ¦b´À´«³¡¤À¥i¨Ï¥Î¼Ò¦¡¦¸§ÇÅܶq$n¡A¦ps/(\d+)/[$1]/¡A¦ý¦b´À´«³¡¤À¤£¤ä«ù¼Ò¦¡ªº¯S®í¦r²Å¡A¦p{},*,+µ¥¡A¦ps/abc/[def]/±N§âabc´À´«¬°[def]¡C
   ´À´«¾Þ§@²Åªº¿ï¶µ¦p¤Uªí¡J
¿ï¶µ´y­z
g§ïÅܼҦ¡¤¤ªº©Ò¦³¤Ç°t
i©¿²¤¼Ò¦¡¤¤ªº¤j¤p¼g
e´À´«¦r²Å¦ê§@¬°ªí¹F¦¡
m±N«Ý¤Ç°t¦êµø¬°¦h¦æ
o¶È½á­È¤@¦¸
s±N«Ý¤Ç°t¦êµø¬°³æ¦æ
x©¿²¤¼Ò¦¡¤¤ªºªÅ¥Õ

   ª`¡Je¿ï¶µ§â´À´«³¡¤Àªº¦r²Å¦ê¬Ý§@ªí¹F¦¡¡A¦b´À´«¤§«e¥ý­pºâ¨ä­È¡A¦p¡J
     $string = "0abc1";
     $string =~ s/[a-zA-Z]+/$& x 2/e; # now $string = "0abcabc1"

¡½¡i ½Ķ¾Þ§@²Å ¡j
   ³o¬O¥t¤@ºØ´À´«¤è¦¡¡A»yªk¦p¡Jtr/string1/string2/¡C¦P¼Ë¡Astring2¬°´À´«³¡¤À¡A¦ý¨ä®ÄªG¬O§âstring1¤¤ªº²Ä¤@­Ó¦r²Å´À´«¬°string2¤¤ªº²Ä¤@­Ó¦r²Å¡A§âstring1¤¤ªº²Ä¤G­Ó¦r²Å´À´«¬°string2¤¤ªº²Ä¤G­Ó¦r²Å¡A¨Ì¦¹Ãþ±À¡C¦p¡J
     $string = "abcdefghicba";
     $string =~ tr/abc/def/; # now string = "defdefghifed"
   ·ístring1¤ñstring2ªø®É¡A¨ä¦h§E¦r²Å´À´«¬°string2ªº³Ì«á¤@­Ó¦r²Å¡F·ístring1¤¤¦P¤@­Ó¦r²Å¥X²{¦h¦¸®É¡A±N¨Ï¥Î²Ä¤@­Ó´À´«¦r²Å¡C
   ½Ķ¾Þ§@²Åªº¿ï¶µ¦p¤U¡J
¿ï¶µ´y­z
c½Ķ©Ò¦³¥¼«ü©w¦r²Å
d§R°£©Ò¦³«ü©w¦r²Å
s§â¦h­Ó¬Û¦Pªº¿é¥X¦r²ÅÁY¦¨¤@­Ó

   ¦p$string =~ tr/\d/ /c;§â©Ò¦³«D¼Æ¦r¦r²Å´À´«¬°ªÅ®æ¡C$string =~ tr/\t //d¡F§R°£tab©MªÅ®æ¡F  $string =~ tr/0-9/ /cs¡F§â¼Æ¦r¶¡ªº¨ä¥¦¦r²Å´À´«¬°¤@­ÓªÅ®æ¡C

¡½¡i ÂX®i¼Ò¦¡¤Ç°t ¡j
   PERL¤ä«ùPERL4©M¼Ð·ÇUNIX¼Ò¦¡¤Ç°t¾Þ§@©Ò¨S¦³ªº¤@¨Ç¼Ò¦¡¤Ç°t¯à¤O¡C¨ä»yªk¬°¡J(?<c>pattern)¡A¨ä¤¤c¬O¤@­Ó¦r²Å¡Apattern¬O°_§@¥Îªº¼Ò¦¡©Î¤l¼Ò¦¡¡C
1¡B¤£¦s¶J¬A¸¹¤ºªº¤Ç°t¤º®e
   ¦bPERLªº¼Ò¦¡¤¤¡A¬A¸¹¤ºªº¤l¼Ò¦¡±N¦s¶J¦b¤º¦s¤¤¡A¦¹¥\¯à§Y¨ú®ø¦s¶J¸Ó¬A¸¹¤ºªº¤Ç°t¤º®e¡A¦p/(?:a|b|c)(d|e)f\1/¤¤ªº\1ªí¥Ü¤w¤Ç°tªºd©Îe¡A¦Ó¤£¬Oa©Îb©Îc¡C
2¡B¤º´O¼Ò¦¡¿ï¶µ
   ³q±`¼Ò¦¡¿ï¶µ¸m©ó¨ä«á¡A¦³¥|­Ó¿ï¶µ¡Ji¡Bm¡Bs¡Bx¥i¥H¤º´O¨Ï¥Î¡A»yªk¬°¡J/(?option)pattern/¡Aµ¥»ù©ó/pattern/option¡C
3¡BªÖ©wªº©M§_©wªº¹w¨£¤Ç°t
   ªÖ©wªº¹w¨£¤Ç°t»yªk¬°/pattern(?=string)/¡A¨ä·N¸q¬°¤Ç°t«á­±¬°stringªº¼Ò¦¡¡A¬Û¤Ïªº¡A(?!string)·N¸q¬°¤Ç°t«á­±«Dstringªº¼Ò¦¡¡A¦p¡J
     $string = "25abc8";
     $string =~ /abc(?=[0-9])/;
     $matched = $&; # $&¬°¤w¤Ç°tªº¼Ò¦¡¡A¦¹³B¬°abc¡A¦Ó¤£¬Oabc8
4¡B¼Ò¦¡ª`ÄÀ
   PERL5¤¤¥i¥H¦b¼Ò¦¡¤¤¥Î?#¨Ó¥[ª`ÄÀ¡A¦p¡J
     if ($string =~ /(?i)[a-z]{2,3}(?# match two or three alphabetic characters)/ {
       ...
     }

CopyRight © 2001¸¾ º~ ¬Ó ´ÂAll Rights Reserved