Мне нужно добавить определенное количество нулей в строку, чтобы скалярный $ newstg ниже был равен «1000».
use strict; my $number_of_zeros = 3; my $newstg = '1'; $newstg = $newstg . sprintf("%0$number_of_zerosd\n",$subd); print "Subd: $newstg\n";
$newstg * ( 10 ** $number_of_zeroes )
или
$newstg . ( '0' x $number_of_zeroes )
Вы можете использовать x оператор повторения .
x
my $number_of_zeros = 3; print '1' . 0 x $number_of_zeros;
Использование может использовать нотацию *, поддерживаемую sprintf / printf, для использования переменных в вашем шаблоне.
*
sprintf
printf
$newstg .= sprintf("%0*d\n", $number_of_zeros, $subd); #same as sprintf("%03d\n", $subd);
Будет нормально работать, если вы измените эту строку:
$newstg = $newstg . sprintf("%0$number_of_zerosd\n",$subd);
до
$newstg = $newstg . sprintf("%0${number_of_zeros}d\n",$subd); # __^ __^