gpt4 book ai didi

perl - 通过 sprintf 在数组上使用 map

转载 作者:行者123 更新时间:2023-12-01 01:26:28 25 4
gpt4 key购买 nike

我有以下代码:

my @some_range = (6..10);
my @some_range_new = map(sprintf("I%03d ", $_), \@some_range);

say join(' ', @some_range_new)

我希望输出是:

I006 I007 I008 I009 I010

但我得到:

275738152

为什么?

注意:我知道我可以my @some_range_new = ("I006".."I010"),但我正在努力学习在结合 sprintf

最佳答案

您在 map 语句中使用了对 @some_range 的引用。我不确定您为什么认为这会奏效。

正确的做法是

map sprintf("I%03d", $_), @some_range;

简而言之,只需删除反斜杠,您的代码即可运行。

它失败的原因是 \@some_range 将被 %d 解释为一个数字。当数组引用被解释为数字时,它计算为引用数组的地址。例如:

$ perl -lwe '@a=1..10; $x = \@a; print $x; printf "I%03d", $x'
ARRAY(0x468c18)
I4623384

关于perl - 通过 sprintf 在数组上使用 map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com