我有一个包含值列表的数组,包括字符串和整数。现在我想只获取整数值,并希望为每个整数值添加100。例如:
@array = ( "my", 214, 3871, "fg" );
现在我想为每个整数值增加100。
最终结果应为:
@array = ( "my", 314, 3971, "fg" );
答案 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;