在 perl 数组中搜索替换

Dev*_*per 4 arrays perl

我有一个数组,如果数组中存在特定值,我想用特定值替换特定值。

大批

my @array_list = ('TEST12','TEST14','TEST','TEST23');
Run Code Online (Sandbox Code Playgroud)

我尝试过的是:

foreach (@array_list) { 
    if($_ eq "TEST"){
        $_ =~ s/$_/HT/;
    }
 } 
Run Code Online (Sandbox Code Playgroud)

还有其他更好的方法吗?请帮助我

Mil*_*ler 6

假设您只想对单个精确匹配进行就地替换:

use strict;
use warnings;

my @array_list = ('TEST12','TEST14','TEST','TEST23');

$_ eq 'TEST' and $_ = 'HT' for @array_list;

use Data::Dump;
dd @array_list;
Run Code Online (Sandbox Code Playgroud)

输出:

("TEST12", "TEST14", "HT", "TEST23")
Run Code Online (Sandbox Code Playgroud)

也可以使用正则表达式完成相同的任务:

s/\ATEST\z/HT/ for @array_list;
Run Code Online (Sandbox Code Playgroud)