将变量与perl中的前导零进行比较

taj*_*i01 1 variables perl compare compiler-errors

我想比较$ num1和$ num2中的前7个字符.当我编译它时,我得到一个奇怪的输出.输出与$ num1或$ num2不匹配.我如何比较这两个变量?

输出: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";
}
Run Code Online (Sandbox Code Playgroud)

Hun*_*len 6

问题#1:

在Perl中,您将字符串与eq运算符进行比较,而不是==:

正确的比较是:

if ( substr($num1, 0, 7) eq substr($num2, 0, 7) ) {
    # ...
}
else {
    # ...
}
Run Code Online (Sandbox Code Playgroud)

问题#2:

以0开头的数字被解释为八进制,你可以阅读更多相关信息perldoc perlnumber

12345601 (octal) == 2739073 (decimal)
12345602 (octal) == 2739074 (decimal)
Run Code Online (Sandbox Code Playgroud)

问题#3:

失踪use strict;use warnings;