4 # https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
7 # use URI::Encode qw(uri_decode);
15 # better to use URI::Encode if you have it
18 foreach my $entity (keys %known_entities) {
19 my $to = $known_entities{$entity};
20 $name =~ s/&$entity;/$to/g;
22 foreach my $entity (map { lc $_ } $name =~ /&([^;]+);/g) {
23 if ($entity ne 'amp') {
24 print "Unable to convert &$entity;, giving up\n";
28 $name =~ s/&/&/ig;
29 $name =~ s/ / /ig;
33 # never parse HTML with regex!
34 # except when you should
40 s/\xe2\x80\x8b//g; # kill zero width space
42 # grab identifier (in hex)
43 if (/\<td.*(0x[0-9A-F]{4})/i) {
47 # next <td> should be company name
48 } elsif ($next_is_name && m|\<td.*\>(.*)\</td\>|) {
49 my $name = uri_decode($1);
50 $name =~ s/^\s+//g; # kill leading
51 $name =~ s/\s+$//g; # and trailing space
52 my $id = hex($identifier);
54 print "\tcase $id:\n";
55 print "\t\treturn \"$name\";\n";