了解字串和数值比较间的差异

Perl有两套完全不同的比较操作符,一套是用来做字符串比较的,一套是用来做数值比较的。

字符比较是一个字符一个字符按照字符的值来比较的,并且这个比较过程中区分大小写和空格的,

例如:

'a’ lt 'b'     #true
'a' eq 'A'  #false
'joseph' eq 'joseph ' #false

数值比较操作的使用,和代数里的符号差不多,例如:

0 < 5  #
10 == 10.0 #

为了避免把eq 和 == 搞混,我们使用perl的智能匹配操作符~~来搞定各种比较操作,它会检查符号两边的操作符。

use 5.010;
if (123 ~~ '456')                     #
if ('123' ~~ 123)                     #
if('MImi' ~~ 456)                     #

另外,可能有些诡异的是,如果符号两边都是像数字的字符串,那么智能匹配操作符仍将他们当成字符串进行比较(和使用eq操作的效果一样)

if ('123.0' ~~ '123')   #
use 5.010;
if(('123'+0) ~~ '123.00')      #
原文地址:https://www.cnblogs.com/tjxwg/p/2913516.html