Perl 比较标量

Perl 比较标量

Perl 有两种类型的比较运算符集。就像其他数学运算符一样,这些运算符不是进行运算,而是比较标量。有 两种 类型的Perl比较运算符集。

一种是用于 数字标量 值,一种是用于 字符串标量值。 这两种类型在下表中都有说明。

数值型 字符串 描述
== eq 等于
!= 等于 不等于
< lt 小于
> gt 大于
<= le 小于或等于
>= ge 大于或等于

以上数字和字符串的比较运算符的解释

  • == 和 eq : 这个运算符用于检查相等。在下面的代码中,比较了使用==和eq后的代码输出,显示了它对数字和字符串标量的不同作用。

例1:

# Perl program to illustrate
# == operator
   
# taking two numeric scalars
x = 5;y = 5;
   
# using "==" operator
if(x ==y)
{
    print "== works with numeric value!";
}

输出

== works with numeric value!

例2 :

# Perl program to illustrate
# == and eq operator
   
# string scalar
str = "geekforgeeks";
   
if(str == "GEEKSFORGEEKS")
{
    print "== doesn't work with string values!";
   
}
   
# comparing with capital string
if($str eq "GEEKSFORGEEKS")
{
    print "eq works with string values!";
}

输出

== doesn't work with string values!

解释: 在例2的输出中,最后一条打印语句将不会被执行,因为$str和GEEKSFORGEEKS不相等。另外,’g’和’G’的ASCII码是不同的。因此,==在数字值中工作正常,但在字符串值中失败,而eq只对字符串标量工作正常。

  • !=和ne

    在下面的代码中,我们比较了使用!=和ne后的输出结果,显示了哪一个对字符串正常工作,哪一个对数字标量值正常工作。

    例1:

# Perl program to demonstrate the 
# != operator
   
# numeric scalars
x = 5;y = 10;
   
# using != operator
if(x !=y)
{
    print "!= works with numeric value!";
}

输出

!= works with numeric value!

例2 :

# Perl program to demonstrate the 
# != and ne operator
   
# string scalar
str = "geekforgeeks";
   
# using != operator
if(str != "GEEKSFORGEEKS")
{
    print "\n!= doesn't work with string values!";
   
}
   
# comparing with capital string
if($str ne "GEEKSFORGEEKS")
{
    print"ne works with string values!";
}

输出

ne works with string values!

解释: 在第二个例子中,第一个打印语句不会被执行,因为!=将两个字符串都转换为0。因此,!=对数字值工作正常,但在字符串值的情况下失败,ne对字符串标量工作正常。

  • ( >或gt)和(<或lt)

    在下面的代码中,我们将比较使用(>或gt)和(<或lt)后的输出,看看哪一个对字符串正常工作,哪一个对数字标量值正常工作。

    例1:

# Perl program to demonstrate the 
# (> or gt) And (< or lt)
# operator
   
# numeric scalars
x = 4;y = 5;
   
# using (> or gt) And (< or lt)
if((x<y) and (x lty) )
{
    print "< and lt works with numeric value!";
}
   
if((y>x) and (y gtx) )
{
    print "\n> and gt works with numeric value!";
}

输出

< and lt works with numeric value!
> and gt works with numeric value!

例2 :

# Perl program to demonstrate the 
# (> or gt) And (< or lt)
# operator
   
# string scalar
str = "geekforgeeks";
   
if(str < "GEEKSFORGEEKS")
{
    print "< doesn't work with string values!";
}
   
# comparing with capital string
if(str lt "GEEKSFORGEEKSZZZ")
{
    print"lt works with string values!";
}
   
# comparing with capital string
if(str gt "GEEKSFORGEEKSZZZ")
{
    print"gt works with string values!";
}
   
# comparing with capital string
if($str lt "kEEKSFORGEEKS")
{
    print"\nlt works with string values!";
}

输出

gt works with string values!
lt works with string values!

解释: 上面的代码告诉我们一些关于Perl如何处理字符串的有趣事情。第一个例子的输出非常明显,因为字符串和数字运算符对数字标量的处理方式是一样的。

但是在第二个输出中,”lt “的表现并不像我们所期望的那样。假设Perl的 “lt “运算符不区分大小写,但我们甚至在后面加上了 “ZZZ”,即使在这种情况下,$str也没有小于引号中的字符串,而接下来的输出显示它是大于引号的。这一点可以从第二个例子的第二行输出中看出

Perl的字符串运算符只先检查String的第一个字符,然后比较ASCII码。因为在ASCII表中,正楷字母排在第一位。Perl编译器先匹配第一个字母,然后再匹配其他的字母。

  • ( >= 或 ge) 和 (<= 或 le)

    这些运算符也对ASCII值起作用,在字符串运算符的情况下检查ASCII值。在数字运算符的情况下,会检查数值。

    例子

# Perl program to demonstrate the 
# (>= or ge) And (<= or le)
# operator
   
# numeric scalars
x = 5;y = 10;
   
if((x <=y) and (y >=x))
{
    print "<= and>= works";
}
   
# string scalar
str= "geeksforgeeks";
   
if ((str le "keeksforgeeks") and ($str ge "feeksforgeeks"))
{
    print "\nle and ge works!";
}

输出

<= and>= works
le and ge works!

要记住的要点

  • 当我们用==、>=或<=等数字 运算符 比较两个字符串标量时,它总是将标量转换为0或0.0。因为它们不是字符串。因此,在==、>=或<=的情况下,如下面的例子所示,这将是真的。
# Perl program to illustrate 
# above point
   
# numeric scalars
x = "BBB";y = "aaa";
   
if ((x ==y and (x <=y) and (x >=y)))
{
    print "True";
}

输出

True

解释: 在上面的代码中,”aaa “在各方面都小于BBB(小写字母和a的ASCII值大于B),但两个字符串仍然相等,因为数字比较运算符将字符串转换为0。

  • 字符串运算符 不比较数字值,而是 比较它们的ASCII值。 字符串运算符比较数字值的ASCII值。在下面的例子中,”9 gt 17 “是真的,但 “17 gt 9 “的结果是假的。
# Perl program to illustrate 
# above point
   
# numeric scalar
x = 9;y = 17;
   
if (x gty)
{
    print "True";
}

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程