| #!/usr/bin/perl -nl |
| # Use Perl's multi-byte alignment code, via sprintf, while |
| # performing a rudimentary check for duplicate names and |
| # removing duplicate name,email pairs. |
| use Encode; |
| |
| BEGIN { my (%elide, %seen, %name) } |
| |
| chomp; |
| my ($name, $email) = split '\0', decode ('UTF-8', $_); |
| |
| if ($elide{"!$name"}) { |
| ; # ignore this author |
| } elsif (index ($name, '!') == 0) { |
| $elide{$name}++; |
| } elsif ($seen{$name}++) { |
| warn "$0: NO-THANKS: duplicate name: $name\n"; |
| } else { |
| print encode ('UTF-8', sprintf ('%-36s', $name)), $email; |
| } |