my %translation = ( "(mytag)(.*?)" => "my_new_tag", "(mytag2)(.*?)" => "my_new_tag2" ); foreach $tag(@TAGS){ foreach $key (keys %translation){ if($tag =~ /$key/gs){ $do_something_with($transaltion{$key}, $1, $2); } } }