perl - 我可以在递减值的同时推送到数组吗?

标签 perl

我知道如何轻松拆分字符串并将条目放入数组,但在这种情况下,我还需要将它们全部递减 1。我可以这样做:

my @valueArray = ();
my $values = "1,7,30";

push @valueArray, split(/,/, $values);

for (my $i = 0; $i < scalar(@valueArray); $i++) {
  $valueArray[$i]--;
}

但是这个 beeing perl 似乎应该有一个更短的方法来在拆分和推送之间做到这一点。有没有,或者我应该停止打高尔夫球而去 for 循环?

最佳答案

这个怎么样?

my $valuesSource = "1,17,30";
my @decrementedValues = map { $_ - 1 } split /,/, $valuesSource;

这里不需要递减;事实上,当其内部 block 更新原始数组元素的值时,很少应该使用 map - 反之亦然。 )

关于perl - 我可以在递减值的同时推送到数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359161/

相关文章:

regex - 使用 Perl 验证年份范围

perl - 我应该如何使用 Perl 存储和压缩 Moose 对象?

perl - 在 Perl Dancer 应用程序中使用集成 Windows 身份验证

perl - Moo(se)、之前和继承

perl - 如何确定未定义 $VERSION 的已安装 Perl 模块的版本?

linux - Perl 脚本卡在 Tomcat 服务器上

perl - 有没有办法在Catalyst中强制$ c-> uri_for生成以https开头的URI?

perl - 使用 substr 附加到字符串是否更快?

perl - 如何在LWP中启用IPv6支持?

perl - 如何在 Perl 中复制文件并维护其时间戳?