#!/usr/bin/perl
$x=1;
$y=43;
$g=0;
$sum=0;
while($y){
$g=length($y);
if($g==1)
{
unshift(@a,$y);
last;
}
if($g!=1)
{
$xx=10*($g-1);
unshift(@a,$y%$xx);
$y=$y/$xx;
redo;
}
}
print "@a\n";

43を一つずつ10^桁数で割ってそのあまりを入れてるんですが
43って出力されるはずなんですが、出力結果が。
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3
となってしまうのは何故ですか?
教えてください。