Perl 中的特殊变量 $&, $`,$' 用在模式匹配中

上一篇 / 下一篇  2008-12-28 13:46:11 / 个人分类:perl

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
$&  用来存放匹配中的值51Testing软件测试网k T O!E"j&zR;f
$`   用来存放匹配中之前所有字符51Testing软件测试网V8g?3w*SE7K:vR9\
$'
   用来存放匹配中之后所有字符51Testing软件测试网]"`JR3a%]] Z
如:
%qRIU*Brfn0
#!/usr/bin/perl -w51Testing软件测试网:w(J OT8Q5Gp}6E
if("Hello good  there,neigbor hello" =~ /S(w+),/)
B Z1N!d6y!K/rf1j0{
kUQ [6GLA0        
print "That actually matched '$&'.";51Testing软件测试网,R!wi$}"l(b(M(j
        
print $`."";51Testing软件测试网W0{,u P@O[
        
print $'." ";51Testing软件测试网q3zt$z/at[;d
}
|T/GBD&k u7@0
4R'QWk6}P?H0执行的结果为:51Testing软件测试网#g*~ef/\;f0|Y
That actually matched 
'there,'.
)VJ?[`{+?|0Hello good  51Testing软件测试网o\ fPe:Db
neigbor hello51Testing软件测试网6^:lT)Y8B![f
---------------------------------------------
7A;Y0xuVB L8^h0另外常用的变量@_51Testing软件测试网W(}.Xl\ rK5Vwt
@_是子程序的一个私有变量◆;如果有一个全局变量@_,它将在此子程序调用前存储起来,当子程序调用完成后,其早期的值会被重新赋还给@_◆。这意味着当将参数传递给子程序时不用担心它会影响此程序中其它子程序的@_这个变量的值。嵌套的子程序调用时,@_的值和上述类似。甚至此子程序递归调用时,每一次调用将得到新的@_,因此子程序调用时将得到其自身的参数列表。
&k F?{2FYo0◆除非调用的子程序前有&而后面没有括号(或者没有参数),此时@_从此调用者的上下文(context)得到。这通常不是个好主意,但有时很有用。

TAG: perl

 

评分:0

我来说两句

Open Toolbar