文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>引起构造【Quote Constructs】

引起构造【Quote Constructs】

时间:2007-01-16  来源:yszll

2.6.3 选择自己的引号
尽管我们认为引起是文本值,但在 Perl 里他们的作用更象操作符,提供了多种多样的代换和模式匹配功能。Perl 为这些操作提供了常用的引起字符,还提供了更通用的客户化方法,让你可以为上面任意操作选择你自己的引起字符。在表2-3里,任意非字母数字,非空白分隔符都可以放在 / 的位置。(新行和空格字符不再允许做分隔符了,尽管老版本的 Perl 曾经一度允许这么做。)

表2-3。引起构造

常用 通用 含义 替换
' ' q// 文本字串
" " qq// 文本字串
` ` qx// 执行命令
() qw// 单词数组
// m// 模式匹配
s/// s/// 模式替换
y/// tr/// 字符转换
" " qr// 正则表达式

这里的有些东西只是构成“语法调味剂”,以避免你在引起字串里输入太多的反斜杠,尤其是在模式匹配里,在那里,普通斜杠和反斜杠很容易混在一起。

如果你选用单引号做分隔符,那么不会出现变量代换,甚至那些正常状态需要代换的构造也不发生代换。如果起始分隔符是一个起始圆括弧,花括弧,方括弧,那么终止分隔符就是对应终止字符。(嵌入的分隔符必须成对出现。)比如:

 $single = q!I said, "You said, 'she sad it.'"!; $double =qq(can't we get some "good" $variable?); $chunk_of_code = q { if ($condition) { print "Gotcha!"; } }; 

最后一个例子表明,你可以在引起声明字符和其起始包围字符之间使用空白。对于象s///和tr///这样的两元素构造而言,如果第一对引起是括弧对,那第二部分获取自己的引起字符。实际上,第二部分不必与第一对一样。所以你可以用象s(bar)或者 tr(a-f)[A-f]这样的东西。因为在两个内部的引起字符之间允许使用空白,所以你可以把上面最后一个例子写做:

 tr (a-f) [A-F]; 

不过,如果用 # 做为引起字符,就不允许出现空白。q#foo# 被分析为字串 'foo',而 q #foo# 引起操作符 q 后面跟着一个注释。其分隔符将从下一行获取。在两个元素的构造中间也可以出现注释,允许你这样写:

 s{foo} # 把 foo {bar} # 换为 bar。 tr [a-f] # 把小写十六进制 [A-F]; # 换为大写 
相关阅读 更多 +
排行榜 更多 +
我要当超人

我要当超人

休闲益智 下载
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载