Perl 比较标量
Perl 有两种类型的比较运算符集。就像其他数学运算符一样,这些运算符不是进行运算,而是比较标量。有 两种 类型的Perl比较运算符集。
一种是用于 数字标量 值,一种是用于 字符串标量值。 这两种类型在下表中都有说明。
数值型 | 字符串 | 描述 |
---|---|---|
== | eq | 等于 |
!= | 等于 | 不等于 |
< | lt | 小于 |
> | gt | 大于 |
<= | le | 小于或等于 |
>= | ge | 大于或等于 |
以上数字和字符串的比较运算符的解释
- == 和 eq : 这个运算符用于检查相等。在下面的代码中,比较了使用==和eq后的代码输出,显示了它对数字和字符串标量的不同作用。
例1:
输出
例2 :
输出
解释: 在例2的输出中,最后一条打印语句将不会被执行,因为$str和GEEKSFORGEEKS不相等。另外,’g’和’G’的ASCII码是不同的。因此,==在数字值中工作正常,但在字符串值中失败,而eq只对字符串标量工作正常。
- !=和ne
在下面的代码中,我们比较了使用!=和ne后的输出结果,显示了哪一个对字符串正常工作,哪一个对数字标量值正常工作。
例1:
输出
例2 :
输出
解释: 在第二个例子中,第一个打印语句不会被执行,因为!=将两个字符串都转换为0。因此,!=对数字值工作正常,但在字符串值的情况下失败,ne对字符串标量工作正常。
- ( >或gt)和(<或lt)
在下面的代码中,我们将比较使用(>或gt)和(<或lt)后的输出,看看哪一个对字符串正常工作,哪一个对数字标量值正常工作。
例1:
输出
例2 :
输出
解释: 上面的代码告诉我们一些关于Perl如何处理字符串的有趣事情。第一个例子的输出非常明显,因为字符串和数字运算符对数字标量的处理方式是一样的。
但是在第二个输出中,”lt “的表现并不像我们所期望的那样。假设Perl的 “lt “运算符不区分大小写,但我们甚至在后面加上了 “ZZZ”,即使在这种情况下,$str也没有小于引号中的字符串,而接下来的输出显示它是大于引号的。这一点可以从第二个例子的第二行输出中看出
Perl的字符串运算符只先检查String的第一个字符,然后比较ASCII码。因为在ASCII表中,正楷字母排在第一位。Perl编译器先匹配第一个字母,然后再匹配其他的字母。
- ( >= 或 ge) 和 (<= 或 le)
这些运算符也对ASCII值起作用,在字符串运算符的情况下检查ASCII值。在数字运算符的情况下,会检查数值。
例子
输出
要记住的要点
- 当我们用==、>=或<=等数字 运算符 比较两个字符串标量时,它总是将标量转换为0或0.0。因为它们不是字符串。因此,在==、>=或<=的情况下,如下面的例子所示,这将是真的。
输出
解释: 在上面的代码中,”aaa “在各方面都小于BBB(小写字母和a的ASCII值大于B),但两个字符串仍然相等,因为数字比较运算符将字符串转换为0。
- 字符串运算符 不比较数字值,而是 比较它们的ASCII值。 字符串运算符比较数字值的ASCII值。在下面的例子中,”9 gt 17 “是真的,但 “17 gt 9 “的结果是假的。
输出