sub uhuu { my $keys = join "|", map "\Q$_\E", ($match_list =~ m{([^/,]+)/[^,]*}g); my %R; return unless $attrs =~ m{ \A \Q$tag\E \s+ (?: ($keys)=(\S+) (?(?{ defined $R{$1} || ($R{$1}=$2, 0) })(?!)) \s* )*+ \z }x; $markup =~ s[X{($keys)}][ $R{$1} // $& ]ger }