use strict; use warnings; my ($text, $tag, %tag, %c); $text = join '', ; while ($text =~ //g) { $tag = $1; while ($tag =~ /(\w+)="(.*?)"/g) { $tag{lc($1)} = $2; } $c{"$tag{type}$tag{name}"} = 1; } for (sort keys %c) { print "$_\n"; } print scalar keys %c; __DATA__