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); } } } #### my %translation = ( "(meintag)(.*)" => { "tag" => $1."new", "value" => $2} ); foreach $tag (@TAGS){ foreach $key (keys %translation){ if($tag =~ /$key/gs){ $do_something_with($translation{$key}->{tag}, $translation{$key}->{value}); } } }