我正在使用Perl进行编程,我遇到的情况是@contents=(A,S,D,F,M,E)
这样的数组,我想用两个新元素M
替换元素X
和Y
,例如@contents
等于(A,S,D,F,X,Y,E)
。
答案 0 :(得分:10)
您可以使用map
。
@contents = map { $_ eq 'M' ? ('X','Y') : $_ } @contents;
或者您可以使用splice
:
for (0 .. $#contents) {
if ($contents[$_] eq 'M') {
splice @contents, $_, 1, 'X', 'Y';
}
}
如果您使用的是perl版本5.12及更高版本,还可以使用keys @contents
作为索引列表进一步简化。
答案 1 :(得分:2)
您要查找的命令是splice。
#!/usr/bin/perl -wT
use strict;
my @contents = qw(A S D F M E);
my $match = 'M';
my @replace = qw(X Y);
my $arrlen = @contents;
for (my $i = 0; $i < $arrlen; $i++)
{
if ($contents[$i] eq $match)
{
splice (@contents, $i, 1, @replace);
last;
}
}
print "$_\n" foreach (@contents);