perl字符串,整数和上下文

时间:2018-07-09 17:01:43

标签: perl

在更大的程序中,我有这样的代码

 my ($chunkCountStr, $msgid, $chunk) =  split (/:/, $msgReceived, 3);
                if ( $chunkCountStr && $msgid && $chunk ) {
                        my $chunkCount = $chunkCountStr;
                        $chunkCount += 0;
                        print "candidate :$chunkCountStr: :$chunkCount: \n";
                 # and more ...

我看到打印此结果:

  

候选人:00002::0:

所以我尝试转换为数值失败

我将该代码提取到一个小的测试程序中。

#!/usr/bin/perl  use strict;

my $chunkCountStr = "0002"; 
my $theThing = "1232131"; 
my $anotherThing = "zzzz";

if ( $chunkCountStr && $theThing && $anotherThing )  {
    my $chunkCount = $chunkCountStr;
    $chunkCount += 0;
    print "candidate :$chunkCountStr: :$chunkCount: \n"; 
}

它按预期工作。

  

候选人:0002::2:

那我错过了什么?两种情况有什么区别?

1 个答案:

答案 0 :(得分:2)

正如choroba和Matt Jacob所暗示的那样,在实际程序中的第一个零之前有一个不可打印的字符。在测试程序中,我们仅使用了预期的前导0。

课程:在您怪罪语言之前检查数据。