- my @tok = map {/^BUR/ || is_callsign($_) ? $_ : ()} split(/\b/, uc $line);
- foreach my $man (@tok) {
- $man = 'BUREAU' if $man =~ /^BUR/;
- my ($r) = grep {$_->[0] eq $man} @{$self->[1]};
- if ($r) {
- $r->[1]++;
- if ($t > $r->[2]) {
- $r->[2] = $t;
- $r->[3] = $by;
- }
+ if (is_callsign($man) && !is_qra($man)) {
+ my @pre = Prefix::extract($man);
+ $tok = $man if @pre && $pre[0] ne 'Q';
+ } elsif ($man =~ /^BUR/) {
+ $tok = 'BUREAU';
+ } elsif ($man =~ /^LOTW/) {
+ $tok = 'LOTW';
+ } elsif ($man =~ /^OQRS/) {
+ $tok = 'OQRS';
+ } elsif ($man eq 'HC' || $man =~ /^HOM/ || $man =~ /^DIR/) {
+ $tok = 'HOME CALL';
+ } elsif ($man =~ /^QRZ/) {
+ $tok = 'QRZ.com';