在更大的程序中,我有这样的代码
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:
那我错过了什么?两种情况有什么区别?
答案 0 :(得分:2)
正如choroba和Matt Jacob所暗示的那样,在实际程序中的第一个零之前有一个不可打印的字符。在测试程序中,我们仅使用了预期的前导0。
课程:在您怪罪语言之前检查数据。