如何只获取数组中的整数值以及如何为数组列表中的每个整数值添加100

时间:2015-08-04 11:58:19

标签: perl

我有一个包含值列表的数组,包括字符串和整数。现在我想只获取整数值,并希望为每个整数值添加100。例如:

@array = ( "my", 214, 3871, "fg" );

现在我想为每个整数值增加100。

最终结果应为:

@array = ( "my", 314, 3971, "fg" );

2 个答案:

答案 0 :(得分:2)

您可以使用地图功能:

use Modern::Perl;
use Data::Dump qw(dump);

my @array = ("my", 214, 3871, "fg");
@array = map { /^\d+$/ ? $_+100 : $_ } @array;
dump@array;

<强>输出:

("my", 314, 3971, "fg") 

答案 1 :(得分:1)

简单地迭代数组。检查当前值是否为整数,如果是,则添加100。

foreach有效,因为它会为数组中的元素添加别名。它没有制作副本。因此,您正在逐个编辑数组元素,尽管您已将它们分配给命名变量(从而使代码更具可读性)。

use strict;
use warnings;
use Data::Printer;

my @array=("my", 214,3871,"fg");

foreach my $element (@array) {
  $element += 100 unless $element =~ /[^0-9]/;
}

p @array;

<强>输出

[
    [0] "my",
    [1] 314,
    [2] 3971,
    [3] "fg"
]

您的问题标题表示您只需要整数值。

my @only_ints_plus_hundred = map { $_ + 100 } grep { !/[^0-9]/ } @array;