使用substr进行数字格式化

时间:2018-03-14 23:46:43

标签: perl

任何人都可以解释这段代码中发生的事情背后的逻辑吗?我知道它的目的是什么,但不知道它的工作原理。

{{1}}

1 个答案:

答案 0 :(得分:3)

打印$i的值以查看正在进行的操作:

#! /usr/bin/perl
use warnings;
use strict;

my $x = 1234567890;

for (my $i = -3; $i > -1 * length $x; $i -= 4) {
    substr( $x, $i, 0 ) = ',';
    print "($i)<$x>\n";
}

输出:

(-3)<1234567,890>
(-7)<1234,567,890>
(-11)<1,234,567,890>

substr中的负位置表示&#34;从右边开始计数&#34;。指定长度0意味着我们插入子字符串。我们在右边的每组3位数之前添加逗号,但我们需要将位置更改为-4,因为我们需要跳过上一步中添加的逗号。