perl的小问题,帮忙看一下,刚学,都不懂。

#!/usr/bin/perlmy@arr=();push@arr,"000000001";push@arr,"000002000";push@arr,"001A004B... #!/usr/bin/perl
my @arr=();
push @arr,"000000001";
push @arr,"000002000";
push @arr,"001A004B0";
while( my $out =shift @arr)
{
$out++;
my $str=sprintf("%09d",$out);
print $str,"\n";
}

输出结果:
E:\Perl_test>perl push.pl
000000002
000002001
000000002

程序是别人的,告诉我为什么会出这种结果。字符串++?搞什么?上面的数字几进制的?字符串?

还有这里为什么不能加 :use strict
加了以后报错。
E:\Perl_test>perl push.pl
Global symbol "@arr" requires explicit package name at push.pl line 4
Global symbol "@arr" requires explicit package name at push.pl line 5
Global symbol "@arr" requires explicit package name at push.pl line 6
Global symbol "@arr" requires explicit package name at push.pl line 7
Execution of push.pl aborted due to compilation errors.
关于use strict 后面加;就解决了。那么帮忙看一下输出结果,尽量详细点,感激不尽。
展开
 我来答
qmg1023
2014-01-21 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:895万
展开全部
5.16.2 在开始加了use strict没有报错

perl是动态语言,变量类型看上下文的,因此字符串可以++,此时当做整数处理
追问
关键是出来的数值我看不懂啊。帮忙分析下啊。
最后一个怎么出的结果?
追答
001A004B0 修改为 003A004B0
最后一个打印出4

因此推论出,将001A004B0转换成10进制数字的时候,遇到A就结束了,因此是001做了自增,等于2
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式