my @arr = (1,2,3,4,5,6); my @tmp; foreach (@arr) { push @tmp, ($_ > 2) ? munge($_) : $_; } @arr = @tmp; print @arr; # 1 2 3 x y z 5 x y z sub munge { ($_[0] % 2) ? $_[0] : ("x","y","z"); }