perl程序设计技巧

1. Why does POE pass parameters as array slices?
http://poe.perl.org/?POE_FAQ/calling_convention

2.  perl regular expression fast referecnces
metacharacters are

{ } [ ] ( )  ^  $  .   |    *   +   ?  

a metacharacter can be matched by putting a backslash before it
anchor metacharacters ^ and $ .
The anchor ^ means match at the beginning of the string and the anchor $ means match at the end of the string, or before a newline at the end of the string.

" housekeeper "   =~   / keeper / ;           #  matches
" housekeeper "   =~   /^ keeper / ;         #  doesn't match
" housekeeper "   =~   / keeper$ / ;         #  matches
" housekeeper "   =~   / keeper$ / ;     #  matches
A character class allows a set of possible characters, rather than just a single character, to match at a particular point in a regexp.Character classes are denoted by brackets [...], with the set of characters to be possiblly matched inside. Some examples:
/ cat / ;       # matches 'cat'
/ [bcr]at / ;   # matches 'bat', 'cat', or 'rat'
/ item[ 0123456789 ] / ;    # matches 'item0' or ... or 'item9'
" abc "   =~   / [cab] / ;   # matches 'a'
/ [yY][eE][sS] /  can be rewritten as  / yes / i .
The 'i' stands for case-insensitive and is an example of a modifier of the matching operation.
The special characters for a character class are - ] / ^ $ (and the pattern delimiter, whatever it is). ] is special because it denotes the end of a character class. $ is special because it denotes a scalar variable. / is special because it is used in escape sequences.
/ [ / ]c]def / #  matches ']def' or 'cdef'
    $x   =   ' bcr ' ;
   
/ [ $x ]at / ;    #  matches 'bat', 'cat', or 'rat'
    / [ / $x ]at / ;   #  matches '$at' or 'xat'
    / [/ / $x ]at / #  matches '/at', 'bat, 'cat', or 'rat'
The specia character '-' acts as a range operator within a character class.
/ item[ 0 - 9 ] / ;   #  matches 'item0' or ... or 'item9'
/ [ 0 - 9bx - z]aa / ;   #  matches '0aa', ..., '9aa',
                    # 'baa', 'xaa', 'yaa', or 'zaa'

   / [ 0 - 9a - fA - F] / ;   #  matches a hexadecimal digit
   / [ 0 - 9a - zA - Z_] / #  matches a "word" character,
                    # like those in a Perl variable name
If '-' is the first or last character in a character class, it is treated as an ordinary character; [-ab], [ab-] and [a/-b] are all equivalent.
The special character ^ in the first position of a character class denotes a negated character class, which matches any characters but those in the brackets.
     / [ ^ a]at / ;   #  doesn't match 'aat' or 'at', but matches
               # all other 'bat', 'cat, '0at', '%at', etc.

     / [ ^ 0 - 9 ] / ;   #  matches a non-numeric character
     / [a ^ ]at / ;   #  matches 'aat' or '^at'; here '^' is ordinary
/ d matches a digit ,  not just [ 0 - 9 ] but also digits from non - roman scripts
/
s matches a whitespace character ,  the set [/ / t/ r/ n/ f] and others
/
w matches a word character (alphanumeric or _) ,  not just [ 0 - 9a - zA - Z_] but also digits and 
     characters from non
- roman scripts
/
D is a negated / d; it represents any other character than a digit ,  or [ ^/ d]
/
S is a negated / s; it represents any non - whitespace character [ ^/ s]
/
W is a negated / w; it represents any non - word character [ ^/ w]
The period 
' . '  matches any character but  "/n "  ( unless  the modifier  // s is in effect ,  as explained
below)
.
     // d/ d :/ d/ d :/ d/ d / #  matches a hh:mm:ss time format
     / [/ d/ s] / ;          #  matches any digit or whitespace character
     // w/ W/ w / ;          #  matches a word char, followed by a
                      # non-word char, followed by a word char

     /.. rt / ;            #  matches any two chars, followed by 'rt'
     / end/ ./ ;           #  matches 'end.'
     / end[ . ] / ;          #  same thing, matches 'end.'
The alternation metacharacter | .To match dog or cat, we  form the
regexp dog|cat. As before, Perl will try to match the  regexp at the earliest possible point in the
string. At each  character position, Perl will first try to match the first  alternative, dog. If dog doesn't
match, Perl will then try the  next alternative, cat. If cat doesn't match either, then the  match fails and
Perl moves to the next position in the string.
     " cats and dogs "   =~   / cat | dog | bird / ;   #  matches "cat"
     " cats and dogs "   =~   / dog | cat | bird / ;   #  matches "cat"
() is grouping metacharacter.
     / (a | b)b / ;     #  matches 'ab' or 'bb'
     / (ac | b)b / ;    #  matches 'acb' or 'bb'
     / ( ^ a | b)c / ;    #  matches 'ac' at start of string or 'bc' anywhere
     / (a | [bc])d / #  matches 'ad', 'bd', or 'cd'
     / house(cat | ) / ;   #  matches either 'housecat' or 'house'
     / house(cat(s | ) | ) / ;   #  matches either 'housecats' or 'housecat' or
                        # 'house'.  Note groups can be nested.

     / ( 19 | 20 | )/ d/ d / ;   #  match years 19xx, 20xx, or the Y2K problem, xx
     " 20 "   =~   / ( 19 | 20 | )/ d/ d / ;   #  matches the null alternative '()dd',
                             # because '20dd' can't match
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值