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') #真