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}); } } }