这是与这个问题相同的问题,但是使用Perl!
我想用一个前导零迭代一个值.
shell中的等价物是:
for i in $(seq -w 01 99) ; do echo $i ; done
Run Code Online (Sandbox Code Playgroud)
Por*_*lus 13
由于前导零很重要,大概你想要将它们用作字符串,而不是数字.在这种情况下,有一个不同的解决方案,不涉及sprintf:
for my $i ("00" .. "99") {
print "$i\n";
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ebb 10
尝试这样的事情:
foreach (1 .. 99) {
$s = sprintf("%02d",$_);
print "$s\n";
}
Run Code Online (Sandbox Code Playgroud)
它..被称为范围运算符,可以根据其上下文执行不同的操作.我们在列表上下文中使用它,因此它从左值到右值计数.所以这是一个使用它的简单例子; 这段代码:
@list = 1 .. 10;
print "@list";
Run Code Online (Sandbox Code Playgroud)
有这个输出:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
该sprintf功能允许我们格式化输出.格式字符串%02d细分如下:
% - 格式字符串的开头0 - 使用前导零2 - 至少两个字符宽d - 将值格式化为有符号整数.所以%02d变成2了什么02.