| #!/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; | |
| } |