Ведущий 0 в буквальном числе заставляет Perl интерпретировать значение, которое я являюсь основанием 8:
123 # 123, in decimal
0123 # 123 in octal, but 83 in decimal
Это не то же самое для строк, преобразованных в числа.В тех Perl игнорирует ведущие 0.Преобразование строки в число имеет дело только с base-10:
"123" + 0 # 123
"0123" + 0 # still 123
В вашем примере в комментарии вы конвертируете литеральное число в строку с начальным нулем.Когда вы преобразуете эту строку обратно в ее числовую форму, вы получите то же значение, с которого вы начали:
$val=sprintf("%05d",1434); # converting 1434 to the string "01434"
print $val; print "\n"; # still a string
print $val+21315; # "01434" + 21315 => 1434 + 21315
print "\n";
print 01434+21315; # oct(1434) + 21315 => 796 + 21315
Нотация с начальным нулем помогает в некоторых встроенных функциях, которые обычно используют восьмеричные числа, например те, которые имеют дело с разрешениями Unix:
chmod 0644, @files