如何使用Perl操作符
小编给大家分享一下如何使用Perl操作符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
箭头Perl操作符
和C和C++类似,双目Perl操作符->是一个中缀解引用Perl操作符。如果右边是一个[...]数组下标、一个{...}散列下标、或者一个(...)子过程参数列表,那么左边必须是一个对应的数组、散列、或者子过程的应用(硬引用或符号引用都行)。在一个左值(可赋值)环境里,如果左边不是一个引用,那它必须是一个能够保存硬引用的位置,这种情况下这种引用会为你自动激活。有关这方面的更多的信息(以及关于故意自激活的一些警告信息),请参阅第八章,引用。
$aref->[42]#一个数组解引用
$href->{"cornedbeff"}#一个散列解引用
$sref->(1,2,3)#一个子过程解引用
要不然,它就是某种类型的方法调用。右边必须是一个方法名(或者一个包含该方法名的简单标量变量),而且左边必须得出一个对象名(一个已赐福引用)或者一个类的名字(也就是说,一个包名字):
$yogi=Bear->new("Yogi");#一个类方法调用$yogi->swipe($picnic);#一个对象方法调用
方法名可以用一个包名修饰以标明在哪个包里开始搜索该方法,或者带着特殊包名字,SUPER::,以表示搜索应该从父类开始。参阅第十二章,对象。
自增和自减Perl操作符
++和--Perl操作符的功能和C里面一样。就是说,当把它们放在一个变量前面时,它们在返回变量值之前增加或者减少变量值,当放在变量后面时,它们在返回变量值后再对其加一或减一。比如,$a++把标量变量$a的值加一,在它执行增加之前返回它的值。类似地,--$b{(/(\w+)/)[0]}把散列%b里用缺省的搜索变量($_)里的***个"单词"索引的元素先减一,然后返回。(注:哦,这儿可能有点不公平,因为好多东西你还不知道。我们只是想让你专心。该表达式的工作过程是这样的:首先,模式匹配用表达式\w+在$_里找***个单词。它周围的圆括弧确保此单词作为单元素列表值返回,因为该模式匹配是在列表环境里进行的。这个列表环境是由列表片段Perl操作符,(...)[0]提供的,它返回列表的***个(也是***一个)元素。该值用做散列的键字,然后散列记录(值)被判断并返回。通常,如果碰到一个复杂的表达式,你可以从内向外地分析它并找出事情发生的顺序。)
自增Perl操作符有一点额外的内建处理。如果你增加的变量是一个数字,或者该变量在一个数字环境里使用,你得到正常自增的功能。不过,如果该变量从来都是在字串环境里使用,而且值为非空,还匹配模式/^[a-zA-z]*[0-9]*$/,这时自增是以字串方式进行的,每个字符都保留在其范围之内,同时还会进位:
print++($foo='99');#打印'100'
print++($foo='a0');#打印'a1'
print++($foo='Az');#打印'Ba'
print++($foo='zz');#打印'aaa'
在我们写这些的时候,自增的额外处理还没有扩展到Unicode字符和数字,不过将来也许会的。
不过自减Perl操作符没有额外处理,我们也没有准备给它增加这个处理。
指数运算
双目**是指数Perl操作符。请注意它甚至比单目Perl操作符的绑定更严格,所以-2**4是-(2**4),不是(-2)**4。这个Perl操作符是用C的pow(3)函数实现的,该函数在内部以浮点数模式运转。它用对数运算进行计算,这就意味着它可以处理小数指数,不过有时候你得到的结果不如直接用乘法得出的准确。
表意单目Perl操作符
大多数单目Perl操作符只有名字(参阅本章稍后的"命名的单目和文件测试Perl操作符"),不过,有些Perl操作符被认为比较重要,所以赋予它们自己的特殊符号。所有这类Perl操作符好象都和否定操作有关。骂数学家去。
单目!执行逻辑否,就是说,"not"。参阅not看看一个在优先级中级别较低的逻辑否。如果操作数为假(数字零,字串"0",空字串或未定义),则对操作数取否,值为真(1),若操作数为真,则值为假("")。
如果操作数是数字,单目-执行数学取负。如果操作数是一个标识,则返回一个由负号和标识符连接在一起的字串。否则,如果字串以正号或负号开头,则返回以相反符号开头的字串。这些规则的一个效果是-bareword等于"-bareword"。这个东西对Tk程序员很有用。
单目~Perl操作符进行按位求反,也就是1的补数。从定义上来看,这个是有点不可移植的东西,因为它受限于你的机器。比如,在一台32位机器上,~123是4294967172,而在一台64位的机器上,它是18446744073709551493。不过你早就知道这个了。
你可能还不知道的是,如果~的参数是字串而不是数字,则返回等长字串,但是字串的所有位都是互补的。这是同时翻转所有位的最快的方法,而且它还是可移植的翻转位的方法,因为它不依靠你的机器的字大小。稍后我们将谈到按位逻辑Perl操作符,它也有一个面向字串的变体。
单目+没有任何语义效果,即使对字串也一样。它在语法上用于把函数名和一个圆括弧表达式分隔开,否则它们会被解释成一个一体的函数参数。(参阅"项和列表Perl操作符"的例子。)如果你向它的一边进行考虑,+取消了圆括弧把前缀Perl操作符变成函数的作用。
单目Perl操作符\给它后面的东西创建一个引用。在一个列表上使用时,它创建一列引用。参阅第八章中的"反斜杠Perl操作符"获取详细信息。不要把这个性质和字串里的反斜杠的作用混淆了,虽然两者都有防止下一个东西被转换的模糊的含义。当然这个相似也并不是完全偶然的。
以上是"如何使用Perl操作符"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!