我正在尝试比较$ num1和$ num2中的前7个字符。当我编译它时,我得到一个奇怪的输出。输出与$ num1或$ num2不匹配。我如何比较这两个变量?
OUTPUT: num1[2739073] num2[2739074]
$num1 = 012345601;
$num2 = 012345602;
#$num1 =~ s/^0+//;
#$num2 =~ s/^0+//;
if (substr($num1, 0, -2) == substr($num2, 0, -2)) {
print "num1[$num1]" . " num2[$num2]\n";
} else {
print "Not equal\n";
}
最佳答案
问题1:
在Perl中,您将字符串与 eq
运算符进行比较,而不是==
进行比较:
正确的比较将是:
if ( substr($num1, 0, 7) eq substr($num2, 0, 7) ) {
# ...
}
else {
# ...
}
问题2:
以0 in开头的数字被解释为八进制,您可以在
perldoc perlnumber
中了解更多信息12345601 (octal) == 2739073 (decimal)
12345602 (octal) == 2739074 (decimal)
问题3:
缺少
use strict;
和use warnings;
关于perl - 比较变量在Perl中的前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40389551/