如何在Perl中使用前导零增加值?

Fal*_*ken 5 perl

这是与这个问题相同的问题,但是使用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.