Continued work to get Porting/checkAUTHORS.pl to a point of sanity
[p5sagit/p5-mst-13.2.git] / Porting / checkAUTHORS.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use Text::Wrap;
4 $Text::Wrap::columns = 80;
5 my ($committer, $patch, $log,$date);
6 use Getopt::Long;
7
8 my ($rank, $percentage, $cumulative, $reverse, $ta, @authors, %authors,
9     %untraced, %patchers, %committers, %real_names);
10 my $result = GetOptions ("rank" => \$rank,            # rank authors
11              "thanks-applied" => \$ta,        # ranks committers
12              "acknowledged=s"   => \@authors ,  # authors files
13              "percentage" => \$percentage,      # show as %age
14              "cumulative" => \$cumulative,
15              "reverse" => \$reverse,
16             );
17
18 if (!$result or (($rank||0) + ($ta||0) + (@authors ? 1 : 0) != 1) or !@ARGV) {
19   die <<"EOS";
20 $0 --rank Changelogs                        # rank authors by patches
21 $0 --acknowledged <authors file> Changelogs # Display unacknowledged authors
22 $0 --thanks-applied Changelogs            # ranks committers
23 $0 --percentage ...                         # show rankings as percentages
24 $0 --cumulative ...                         # show rankings cumulatively
25 $0 --reverse ...                            # show rankings in reverse
26 Specify stdin as - if needs be. Remember that option names can be abbreviated.
27 EOS
28 }
29
30
31 my $prev = "";
32 my %map;
33
34 while (<DATA>) {
35     chomp;
36     s/\\100/\@/g;
37     $_ = lc;
38     if (my ($correct, $alias) = /^\s*([^#\s]\S*)\s+(.*\S)/) {
39         $correct =~ s/^\\043/#/;
40         if ($correct eq '+') {$correct = $prev} else {$prev = $correct}
41         $map {$alias} = $correct;
42     }
43 }
44
45 #
46 # Email addresses for we do not have names.
47 #
48 $map {$_} = "?" for 
49     "agrow\100thegotonerd.com",
50     "alexander_bluhm\100genua.de",
51     "alexander_gernler\100genua.de",
52     "ammon\100rhythm.com",
53     "andrew\100sundale.net",
54     "bah\100longitude.com",
55     "bbucklan\100jpl-devvax.jpl.nasa.gov",
56     "ben\100linuxgazette.net",
57     "bilbo\100ua.fm",
58     "blino\100mandriva.com",
59     "bob\100starlabs.net",
60     "bonefish\100cs.tu-berlin.de",
61     "bstrand\100switchmanagement.com",
62     "cygwin\100cygwin.com",
63     "david\100dhaller.de",
64     "dformosa\100dformosa.zeta.org.au",
65     "dgay\100acm.org",
66     "erik\100cs.uni-jena.de",
67     "glasser\100tang-eleven-seventy-nine.mit.edu",
68     "gml4410\100ggr.co.uk",
69     "grommel\100sears.com",
70     "ilmari\100vesla.ilmari.org",
71     "ilya\100juil.nonet",
72     "info\100lingo.kiev.ua",
73     "jms\100mathras.comcast.net",
74     "johnh\100isi.edu",
75     "kan\100dcit.cz",
76     "kaminsky\100math.huji.ac.il",
77     "knew-p5p\100pimb.org",
78     "kvr\100centrum.cz",
79     "lemkemch\100t-online.de",
80     "mauzo\100csv.warwick.ac.uk",
81     "mlelstv\100serpens.de",
82     "p.boven\100sara.nl",
83     "padre\100elte.hu",
84     "pancho\100pancho.name",
85     "perlbug\100veggiechinese.net",
86     "pm\100capmon.dk",
87     "premchai21\100yahoo.com",
88     "pxm\100nubz.org",
89     "raf\100tradingpost.com.au",
90     "scott\100perlcode.org",
91     "smoketst\100hp46t243.cup.hp.com",
92     "yath-perlbug\100yath.de",
93 ;
94
95 #
96 # Email addresses for people that don't have an email address in AUTHORS
97 # Presumably deliberately?
98
99
100 $map {$_} = '!' for
101      # Nick Ing-Simmons has passed away (2006-09-25).
102      "nick\100ing-simmons.net",
103      "nik\100tiuk.ti.com",
104      "nick.ing-simmons\100elixent.com",
105      "nick\100ni-s.u-net.com",
106          "nick.ing-simmons\100tiuk.ti.com",
107
108      # Iain Truskett has passed away (2003-12-29).
109      "perl\100dellah.anu.edu.au",
110      "spoon\100dellah.org",
111      "spoon\100cpan.org",
112
113      # Ton Hospel
114      "me-02\100ton.iguana.be",
115      "perl-5.8.0\100ton.iguana.be",
116      "perl5-porters\100ton.iguana.be",
117
118      # Beau Cox
119      "beau\100beaucox.com",
120
121      # Randy W. Sims 
122      "ml-perl\100thepierianspring.org",
123
124      # perl internal addresses
125      "perl5-porters\100africa.nicoh.com",
126          "perlbug\100perl.org",,
127      "perl5-porters.nicoh.com",
128          "perlbug-followup\100perl.org",
129          "perlbug-comment\100perl.org",
130          "bug-module-corelist\100rt.cpan.org",
131          "bug-storable\100rt.cpan.org",
132          "bugs-perl5\100bugs6.perl.org",
133          "unknown",
134          "unknown\100unknown",
135          "unknown\100perl.org",
136         "",
137         "(none)",
138 ;
139
140
141 if (@authors) {
142   my %raw;
143   foreach my $filename (@authors) {
144     open FH, "<$filename" or die "Can't open $filename: $!";
145     while (<FH>) {
146       next if /^\#/;
147       next if /^-- /;
148       if (/<([^>]+)>/) {
149     # Easy line.
150     $raw{$1}++;
151       } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) {
152     # Name only
153     $untraced{$1}++;
154       } else {
155     chomp;
156     warn "Can't parse line '$_'";
157       }
158     }
159   }
160   foreach (keys %raw) {
161     print "E-mail $_ occurs $raw{$_} times\n" if $raw{$_} > 1;
162     $_ = lc $_;
163     $authors{$map{$_} || $_}++;
164   }
165   ++$authors{'!'};
166   ++$authors{'?'};
167 }
168
169 my @lines = split(/^commit\s*/sm,join('',<>));
170 for ( @lines) {
171     next if m/^$/;
172   next if m/^(\S*?)^Merge:/ism; # skip merge commits
173   if (m/^(.*?)^Author:\s*(.*?)^Date:\s*(.*?)^(.*)$/gism) {
174     # new patch
175     ($patch, $committer, $date,$log) = ($1,$2,$3,$4);
176     chomp($committer);
177     unless ($committer) { die $_}
178     &process ($committer, $patch, $log);
179 } else { die "XXX $_ did not match";}
180 }
181
182
183 if ($rank) {
184   &display_ordered(\%patchers);
185 } elsif ($ta) {
186   &display_ordered(\%committers);
187 } elsif (%authors) {
188   my %missing;
189   foreach (sort keys %patchers) {
190     next if $authors{$_};
191     # Sort by number of patches, then name.
192     $missing{$patchers{$_}}->{$_}++;
193   }
194   foreach my $patches (sort {$b <=> $a} keys %missing) {
195     print "\n\n=head1 $patches patch(es)\n\n";
196     foreach my $author (sort keys %{$missing{$patches}}) {
197         my $xauthor = $author;
198         $xauthor =~ s/@/\\100/g; # xxx temp hack
199           print "".($real_names{$author}||$author) ."\t\t\t<" . $xauthor.">\n" ;
200     }
201   }
202 }
203
204 sub display_ordered {
205   my $what = shift;
206   my @sorted;
207   my $total;
208   while (my ($name, $count) = each %$what) {
209     push @{$sorted[$count]}, $name;
210     $total += $count;
211   }
212
213   my $i = @sorted;
214   return unless @sorted;
215   my $sum = 0;
216   foreach my $i ($reverse ? 0 .. $#sorted : reverse 0 .. $#sorted) {
217     next unless $sorted[$i];
218     my $prefix;
219     $sum += $i * @{$sorted[$i]};
220     # Value to display is either this one, or the cumulative sum.
221     my $value = $cumulative ? $sum : $i;
222     if ($percentage) {
223     $prefix = sprintf "%6.2f:\t", 100 * $value / $total;
224     } else {
225     $prefix = "$value:\t";
226     }
227     print wrap ($prefix, "\t", join (" ", sort @{$sorted[$i]}), "\n");
228   }
229 }
230
231 sub process {
232   my ($committer, $patch, $log) = @_;
233   return unless $committer;
234   my @authors = $log =~ /From:\s+.*?([^"\@ \t\n<>]+\@[^"\@ \t\n<>]+)/gm;
235
236   if (@authors) {
237     foreach my $addr (@authors) {
238
239       $patchers{_raw_address($addr)}++;
240     }
241     # print "$patch: @authors\n";
242     $committers{_raw_address($committer)}++;
243   } else {
244       # print "$patch: $committer\n";
245     # Not entirely fair as this means that the maint pumpking scores for
246     # everything intergrated that wasn't a third party patch in blead
247     $patchers{_raw_address($committer)}++;
248   }
249 }
250
251 sub _raw_address {
252     my $addr = shift;
253     my $real_name;
254     if ($addr =~ /<.*>/) {
255     $addr =~ s/^\s*(.*)\s*<\s*(.*?)\s*>.*$/$2/ ;
256      $real_name = $1;
257     }
258     $addr = lc $addr;
259     $addr = $map{$addr} || $addr;
260     
261     if ($real_name) { $real_names{$addr} = $real_name};
262     return $addr;
263 }
264
265
266 __DATA__
267
268 #
269 # List of mappings. First entry the "correct" email address, as appears
270 # in the AUTHORS file. Second is any "alias" mapped to it.
271 #
272 # If the "correct" email address is a '+', the entry above is reused; 
273 # this for addresses with more than one alias.
274 #
275 # Note that all entries are in lowercase. Further, no '@' signs should
276 # appear; use \100 instead.
277 #
278 #
279 #  Committers.
280 #
281 adi                                     enache\100rdslink.ro
282 alanbur                                 alan.burlison\100sun.com
283 +                                       alan.burlison\100uk.sun.com
284 +                                       aburlison\100cix.compulink.co.uk
285 ams                                     ams\100toroid.org
286 +                                       ams\100wiw.org
287 chip                                    chip\100pobox.com
288 +                                       chip\100perl.com
289 +                                       salzench\100nielsenmedia.com
290 +                                       chip\100atlantic.net
291 +                                       chip\100rio.atlantic.net
292 +                                       salzench\100dun.nielsen.com
293 craigb                                  craig.berry\100psinetcs.com
294 +                                       craig.berry\100metamorgs.com
295 +                                       craig.berry\100signaltreesolutions.com
296 +                                       craigberry\100mac.com
297 +                                       craig.a.berry\100gmail.com
298 +                                                                               craig a. berry)
299 davem                                   davem\100fdgroup.com
300 +                                       davem\100iabyn.nospamdeletethisbit.com
301 +                                       davem\100iabyn.com
302 +                                       davem\100fdgroup.co.uk
303 +                                       davem\100fdisolutions.com
304 +                                       davem\100iabyn.com
305 demerphq                                demerphq\100gmail.com
306 +                                       yves.orton\100de.mci.com
307 +                                       yves.orton\100mciworldcom.de
308 +                                       demerphq\100dromedary.booking.com
309 +                                       demerphq\100gemini.(none)
310 +                                       demerphq\100camel.booking.com
311 +                                       demerphq\100hotmail.com
312 doughera                                doughera\100lafayette.edu
313 +                                       doughera\100lafcol.lafayette.edu
314 +                                       doughera\100fractal.phys.lafayette.edu
315 +                                       doughera.lafayette.edu
316 +                                       doughera\100newton.phys.lafayette.edu
317
318 gbarr                                   gbarr\100pobox.com
319 +                                       bodg\100tiuk.ti.com
320 +                                       gbarr\100ti.com
321 +                                       graham.barr\100tiuk.ti.com
322 gisle                                   gisle\100activestate.com
323 +                                       gisle\100aas.no
324 +                                       aas\100aas.no
325 +                                       aas\100bergen.sn.no
326 gsar                                    gsar\100activestate.com
327 +                                       gsar\100cpan.org
328 +                                       gsar\100engin.umich.edu
329 hv                                      hv\100crypt.compulink.co.uk
330 +                                       hv\100crypt.org
331 +                                       hv\100iii.co.uk
332 jhi                                     jhi\100iki.fi
333 +                                       jhietaniemi\100gmail.com
334 +                                       jhi\100kosh.hut.fi
335 +                                       jhi\100alpha.hut.fi
336 +                                       jhi\100cc.hut.fi
337 +                                       jhi\100hut.fi
338 +                                       jarkko.hietaniemi\100nokia.com
339 +                                       jarkko.hietaniemi\100cc.hut.fi
340 jesse                                   jesse\100bestpractical.com
341 +                                       jesse\100fsck.com
342 +                                       jesse\100perl.org
343 merijn                                  h.m.brand\100xs4all.nl
344 +                                       h.m.brand\100hccnet.nl
345 +                                       merijn\100l1.procura.nl
346 +                                                                               merijn\100a5.(none)
347 +                                                                               merijnb\100ms.com
348 +                                                                               merijnb\100iloquent.nl
349 +                                                                               merijnb\100iloquent.com
350 mhx                                     mhx-perl\100gmx.net
351 +                                                                               mhx\100r2d2.(none)
352 nicholas                                nick\100unfortu.net
353 +                                       nick\100ccl4.org
354 +                                       nick\100talking.bollo.cx
355 +                                       nick\100plum.flirble.org
356 +                                       nick\100babyhippo.co.uk
357 +                                       nick\100bagpuss.unfortu.net
358 +                                                                               Nicholas Clark (sans From field in mail header)
359 pudge                                   pudge\100pobox.com
360 rgs                                     rgarciasuarez\100free.fr
361 +                                       rgarciasuarez\100mandrakesoft.com
362 +                                       rgarciasuarez\100mandriva.com
363 +                                       rgarciasuarez\100gmail.com
364 +                                       raphel.garcia-suarez\100hexaflux.com
365 sky                                     sky\100nanisky.com
366 +                                       artur\100contiller.se
367 +                                       arthur\100contiller.se
368 steveh                                  stevehay\100planit.com
369 +                                       steve.hay\100uk.radan.com
370 stevep                                  steve\100fisharerojo.org
371 +                                       steve.peters\100gmail.com
372 timb                                    Tim.Bunce\100pobox.com
373 +                                       tim.bunce\100ig.co.uk
374
375
376 #
377 # Mere mortals.
378 #
379 \043####\100juerd.nl                    juerd\100cpan.org
380 +                                       juerd\100convolution.nl
381 7k8lrvf02\100sneakemail.com             kjx9zthh3001\100sneakemail.com
382 +                                       dtr8sin02\100sneakemail.com
383 +                                       rt8363b02\100sneakemail.com
384 +                                       o6hhmk002\100sneakemail.com
385 +                                       smueller\100cpan.org
386 +                                       l2ot9pa02\100sneakemail.com
387 +                                       wyp3rlx02\100sneakemail.com
388 +                                       0mgwtfbbq\100sneakemail.com
389
390 a.r.ferreira\100gmail.com               aferreira\100shopzilla.com
391 abe\100ztreet.demon.nl                  abeltje\100cpan.org
392 abela\100hsc.fr                         abela\100geneanet.org
393 abigail\100abigail.be                   abigail\100foad.org
394 +                                       abigail\100abigail.nl
395 +                                       abigail\100fnx.com
396 aburt\100isis.cs.du.edu                                 isis!aburt
397 ach\100mpe.mpg.de                       ach\100rosat.mpe-garching.mpg.de
398 adavies\100ptc.com                                              alex.davies\100talktalk.net
399 ajohnson\100nvidia.com                  ajohnson\100wischip.com
400 alexm\100netli.com                      alexm\100w-m.ru
401 alex-p5p\100earth.li                    alex\100rcon.rog
402 alexmv\100mit.edu                       alex\100chmrr.net
403 alian\100cpan.org                       alian\100alianwebserver.com
404 allen\100grumman.com                    allen\100gateway.grumman.com
405 allen\100huarp.harvard.edu              nort\100bottesini.harvard.edu
406 +                                                                               nort\100qnx.com
407 allens\100cpan.org                      easmith\100beatrice.rutgers.edu
408 andreas.koenig\100anima.de              andreas.koenig.gmwojprw\100franz.ak.mind.de
409 +                                       andreas.koenig.7os6vvqr\100franz.ak.mind.de
410 +                                       a.koenig\100mind.de
411 +                                       k\100anna.in-berlin.de
412 +                                       andk\100cpan.org
413 +                                       koenig\100anna.mind.de
414 +                                       k\100anna.mind.de
415 +                                                                               root\100ak-71.mind.de
416 +                                                                               root\100ak-75.mind.de
417 +                                                                               k\100sissy.in-berlin.de
418 +                                                                               a.koenig\100kulturbox.de
419 +                                                                               k\100sissy.in-berlin.de
420 anno4000\100lublin.zrz.tu-berlin.de     anno4000\100mailbox.tu-berlin.de
421 +                                       siegel\100zrz.tu-berlin.de
422 ash\100cpan.org                         ash_cpan\100firemirror.com
423 avarab\100gmail.com                     avar\100cpan.org
424
425 bailey\100newman.upenn.edu              bailey\100hmivax.humgen.upenn.edu
426 +                                       bailey\100genetics.upenn.edu
427 +                                                                               bailey.charles\100gmail.com
428 bah\100ecnvantage.com                   bholzman\100longitude.com
429 bcarter\100gumdrop.flyinganvil.org      q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org
430 ben_tilly\100operamail.com              btilly\100gmail.com
431 +                                                                               ben_tilly\100hotmail.com
432 ben\100morrow.me.uk                                             mauzo\100csv.warwick.ac.uk
433 BQW10602\100nifty.com                                   sadahiro\100cpan.org
434
435 chromatic\100wgz.org                    chromatic\100rmci.net
436 clintp\100geeksalad.org                                 cpierce1\100ford.com
437 clkao\100clkao.org                      clkao\100bestpractical.com
438 corion\100corion.net                    corion\100cpan.org
439 cp\100onsitetech.com                    publiustemp-p5p\100yahoo.com
440 +                                       publiustemp-p5p3\100yahoo.com
441 cpan\100audreyt.org                     autrijus\100egb.elixus.org
442 +                                       autrijus\100geb.elixus.org
443 +                                       autrijus\100gmail.com
444 +                                       autrijus\100ossf.iis.sinica.edu.tw
445 +                                       autrijus\100autrijus.org
446 +                                       audreyt\100audreyt.org
447 crt\100kiski.net                                                perl\100ctweten.amsite.com
448
449 damian\100conway.org                                    damian\100cs.monash.edu.au
450 dagolden\100cpan.org                    xdaveg\100gmail.com
451 dan\100sidhe.org                        sugalsd\100lbcc.cc.or.us
452 +                                       sugalskd\100osshe.edu
453 david.dyck\100fluke.com                 dcd\100tc.fluke.com
454 david\100kineticode.com                                 david\100wheeler.com
455 +                                                                               david\100wheeler.net
456 djberg86\100attbi.com                                   djberg96\100attbi.com
457 domo\100computer.org                    shouldbedomo\100mac.com
458 +                                       domo\100slipper.ip.lu
459 +                                                                               domo\100tcp.ip.lu
460 dougm\100covalent.net                   dougm\100opengroup.org
461 +                                       dougm\100osf.org
462 dougw\100cpan.org                                               doug_wilson\100intuit.com
463
464 egf7\100columbia.edu                    efifer\100sanwaint.com
465 eggert\100twinsun.com                                   eggert\100sea.sm.unisys.com
466 epeschko\100den-mdev1                   esp5\100pge.com
467
468 fugazi\100zyx.net                       larrysh\100cpan.org
469 +                                                                               lshatzer\100islanddata.com
470
471 gbacon\100itsc.uah.edu                                          gbacon\100adtrn-srv4.adtran.com
472 gfuji\100cpan.org                                               g.psy.va\100gmail.com
473 gibreel\100pobox.com                    stephen.zander\100interlock.mckesson.com
474 +                                       srz\100loopback
475 gnat\100frii.com                        gnat\100prometheus.frii.com
476 gp\100familiehaase.de                   gerrit\100familiehaase.de
477 grazz\100pobox.com                      grazz\100nyc.rr.com
478 gward\100ase.com                                                greg\100bic.mni.mcgill.ca
479 hansmu\100xs4all.nl                     hansm\100icgroup.nl
480 +                                       hansm\100icgned.nl
481 +                                       hans\100icgned.nl
482 +                                       hansm\100euronet.nl
483 hio\100ymir.co.jp                       hio\100hio.jp
484 hops\100sco.com                                                 hops\100scoot.pdev.sco.com
485
486 james\100mastros.biz                                            theorb\100desert-island.me.uk
487 jand\100activestate.com                                 jan.dubois\100ibm.net
488 japhy\100pobox.com                      japhy\100pobox.org
489 +                                       japhy\100perlmonk.org
490 +                                       japhy\100cpan.org
491 +                                                                               jeffp\100crusoe.net
492 jari.aalto\100poboxes.com               jari.aalto\100cante.net
493 jcromie\100divsol.com                   jcromie\100cpan.org
494 +                                       jim.cromie\100gmail.com
495 jidanni\100jidanni.org                                  jidanni\100hoffa.dreamhost.com
496 jdhedden\100cpan.org                    jerry\100hedden.us
497 +                                       jdhedden\1001979.usna.com
498 +                                       jdhedden\100gmail.com
499 +                                       jdhedden\100yahoo.com
500 +                                                                               jhedden\100pn100-02-2-356p.corp.bloomberg.com
501 jeremy\100zawodny.com                                   jzawodn\100wcnet.org
502 jesse\100sig.bsh.com                                    jesse\100ginger
503 jfriedl\100yahoo.com                    jfriedl\100yahoo-inc.com
504 jhannah\100omnihotels.com                                       jay\100jays.net
505 jjore\100cpan.org                       twists\100gmail.com
506 jns\100integration-house.com            jns\100gellyfish.com
507 +                                       gellyfish\100gellyfish.com
508 john\100atlantech.com                                   john\100titanic.atlantech.com
509 john\100johnwright.org                                  john.wright\100hp.com
510 joseph\100cscaper.com                                   joseph\1005sigma.com
511 joshua\100rodd.us                                                       jrodd\100pbs.org
512 jtobey\100john-edwin-tobey.org                          jtobey\100user1.channel1.com
513 jpeacock\100rowman.com                  john.peacock\100havurah-software.org
514 +                                       jpeacock\100havurah-software.org
515 +                                                                               jpeacock\100dsl092-147-156.wdc1.dsl.speakeasy.net
516 jql\100accessone.com                                    jql\100jql.accessone.com
517 jsm28\100hermes.cam.ac.uk                                       jsm28\100cam.ac.uk
518
519 kane\100dwim.org                        kane\100xs4all.net
520 +                                       kane\100cpan.org
521 +                                       kane\100xs4all.nl
522 +                                       jos\100dwim.org
523 +                                       jib\100ripe.net
524 ken\100mathforum.org                    kenahoo\100gmail.com
525 kroepke\100dolphin-services.de          kay\100dolphin-services.de
526 kstar\100wolfetech.com                  kstar\100cpan.org
527 +                                       kurt_starsinic\100ml.com
528 +                                                                               kstar\100www.chapin.edu
529 +                                                                               kstar\100chapin.edu
530 larry\100wall.org                       lwall\100jpl-devvax.jpl.nasa.gov
531 +                                       lwall\100netlabs.com
532 +                                       larry\100netlabs.com
533 +                                       lwall\100sems.com
534 +                                       lwall\100scalpel.netlabs.com
535 laszlo.molnar\100eth.ericsson.se                        molnarl\100cdata.tvnet.hu
536 lewart\100uiuc.edu                      lewart\100vadds.cvm.uiuc.edu    
537 +                                       d-lewart\100uiuc.edu
538 lstein\100cshl.org                                              lstein\100formaggio.cshl.org
539 +                                                                               lstein\100genome.wi.mit.edu
540 lupe\100lupe-christoph.de                                       lupe\100alanya.m.isar.de
541 lutherh\100stratcom.com                                 lutherh\100infinet.com
542 mab\100wdl.loral.com                                            markb\100rdcf.sm.unisys.com
543 marcel\100codewerk.com                  gr\100univie.ac.at
544 mark.p.lutz\100boeing.com                                       tecmpl1\100triton.ca.boeing.com
545 mats\100sm6sxl.net                      mats\100sm5sxl.net
546 mauzo\100csv.warwick.ac.uk                              mauzo\100.(none)
547 mbarbon\100dsi.unive.it                 mattia.barbon\100libero.it
548 mcmahon\100ibiblio.org                  mcmahon\100metalab.unc.edu
549 merlyn\100stonehenge.com                                merlyn\100gadget.cscaper.com
550 mgjv\100comdyn.com.au                   mgjv\100tradingpost.com.au
551 mlh\100swl.msd.ray.com                                          webtools\100uewrhp03.msd.ray.com
552 michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
553 mike\100stok.co.uk                      mike\100exegenix.com
554 mjtg\100cam.ac.uk                       mjtg\100cus.cam.ac.uk
555 mikedlr\100tardis.ed.ac.uk                              mikedlr\100it.com.pl
556 moritz\100casella.verplant.org          moritz\100faui2k3.org
557 +                                                                               moritz lenz
558
559
560 neeracher\100mac.com                                    neeri\100iis.ee.ethz.ch
561 neil\100bowers.com                                              neilb\100cre.canon.co.uk
562 nospam-abuse\100bloodgate.com           tels\100bloodgate.com
563 +                                       perl_dummy\100bloodgate.com
564
565 ian.phillipps\100iname.com                              ian_phillipps\100yahoo.co.uk
566 ignasi.roca\100fujitsu-siemens.com      ignasi.roca\100fujitsu.siemens.es
567 ilya\100math.berkeley.edu               ilya\100math.ohio-state.edu
568 +                                       nospam-abuse\100ilyaz.org
569
570 okamoto\100corp.hp.com                  okamoto\100hpcc123.corp.hp.com
571 orwant\100oreilly.com                                   orwant\100media.mit.edu
572
573 p5-authors\100crystalflame.net          perl\100crystalflame.net
574 +                                       rs\100crystalflame.net
575 +                                       coral\100eekeek.org
576 +                                       coral\100moonlight.crystalflame.net
577 +                                       rs\100oregonnet.com
578 paul.green\100stratus.com               paul_greenvos\100vos.stratus.com
579 +                                                                               pgreen\100seussnt.stratus.com
580 paul.marquess\100btinternet.com         paul_marquess\100yahoo.co.uk
581 +                                       paul.marquess\100ntlworld.com
582 +                                       paul.marquess\100openwave.com
583 +                                       pmarquess\100bfsec.bt.co.uk
584 +                                       pmqs\100cpan.org
585 pcg\100goof.com                         schmorp\100schmorp.de
586 perl\100cadop.com                       cdp\100hpescdp.fc.hp.com
587 perl\100greerga.m-l.org                                 greerga\100m-l.org
588 perl\100profvince.com                   vince\100profvince.com
589 perl-rt\100wizbit.be                    p5p\100perl.wizbit.be
590 # Maybe we should special case this to get real names out?
591 Peter.Dintelmann\100Dresdner-Bank.com   peter.dintelmann\100dresdner-bank.com 
592 # NOTE: There is an intentional trailing space in the line above
593 pfeifer\100wait.de                      pfeifer\100charly.informatik.uni-dortmund.de
594 +                                                                               upf\100de.uu.net
595 phil\100perkpartners.com                phil\100finchcomputer.com
596 pimlott\100idiomtech.com                andrew\100pimlott.net
597 +                                                                               pimlott\100abel.math.harvard.edu
598 pne\100cpan.org                         philip.newton\100gmx.net
599 +                                       philip.newton\100datenrevision.de
600 +                                       pnewton\100gmx.de
601 pprymmer\100factset.com                 pvhp\100forte.com
602 public\100khwilliamson.com              khw\100karl.(none)
603
604 radu\100netsoft.ro                      rgreab\100fx.ro
605 raphael.manfredi\100pobox.com           raphael_manfredi\100grenoble.hp.com
606 renee.baecker\100smart-websolutions.de          reneeb\100reneeb-desktop.(none)
607 richard.foley\100ubsw.com               richard.foley\100t-online.de
608 +                                       richard.foley\100ubs.com
609 +                                       richard.foley\100rfi.net
610 rick\100consumercontact.com             rick\100bort.ca
611 +                                       rick.delaney\100rogers.com
612 +                                       rick\100bort.ca
613 +                                                                               rick.delaney\100home.com
614 rjbs\100cpan.org                        rjbs-perl-p5p\100lists.manxome.org
615 +                    perl.p5p\100rjbs.manxome.org
616 rjk\100linguist.dartmouth.edu           rjk\100linguist.thayer.dartmouth.edu
617 +                                       rjk-perl-p5p\100tamias.net
618 rjray\100redhat.com                        rjray\100uswest.com
619 rmgiroux\100acm.org                     rmgiroux\100hotmail.com
620 +                                                                               mgiroux\100bear.com
621 rmbarker\100cpan.org                    rmb1\100cise.npl.co.uk
622 +                                       robin.barker\100npl.co.uk
623 +                                       rmb\100cise.npl.co.uk
624 robertmay\100cpan.org                   rob\100themayfamily.me.uk
625 roberto\100keltia.freenix.fr                    roberto\100eurocontrol.fr
626 robin\100cpan.org                       robin\100kitsite.com
627 roderick\100argon.org                   roderick\100gate.net
628 +                                                                               roderick\100ibcinc.com
629 rootbeer\100teleport.com                rootbeer\100redcat.com
630 +                                                                               tomphoenix\100unknown
631 schubiger\100cpan.org                   steven\100accognoscere.org
632 +                                       sts\100accognoscere.org
633 +                                       schubiger\100gmail.com
634 schwern\100pobox.com                    schwern\100gmail.com
635 +                                       schwern\100athens.arena-i.com
636 +                                       schwern\100blackrider.aocn.com
637 +                                       schwern\100ool-18b93024.dyn.optonline.net
638 schotth\100sgi.com                                              author scotth\100sgi.com 842220273 +0000
639 schwab\100suse.de                                               schwab\100issan.informatik.uni-dortmund.de
640 +                                                                               schwab\100ls5.informatik.uni-dortmund.de
641 sebastien\100aperghis.net               maddingue\100free.fr
642 +                                       saper\100cpan.org
643 shlomif\100vipe.technion.ac.il          shlomif\100iglu.org.il
644 simon\100simon-cozens.org               simon\100pembro4.pmb.ox.ac.uk
645 +                                       simon\100brecon.co.uk
646 +                                       simon\100othersideofthe.earth.li
647 +                                       simon\100cozens.net
648 +                                       simon\100netthink.co.uk
649 slaven\100rezic.de                      slaven.rezic\100berlin.de
650 +                                       srezic\100iconmobile.com
651 +                                       srezic\100cpan.org
652 +                                                                               eserte\100cs.tu-berlin.de
653 smcc\100mit.edu                         smcc\100ocf.berkeley.edu
654 +                                       smcc\100csua.berkeley.edu
655 +                                       alias\100mcs.com
656 +                                       smccam\100uclink4.berkeley.edu
657 spider\100orb.nashua.nh.us              spider\100web.zk3.dec.com
658 +                                       spider\100leggy.zk3.dec.com
659 +                                       spider-perl\100orb.nashua.nh.us
660 +                                       spider\100peano.zk3.dec.com
661 +                                       spider.boardman\100orb.nashua.nh.us>
662 +                                       spidb\100cpan.org
663 +                                                                               spider.boardman\100orb.nashua.nh.us
664 spp\100ds.net                           spp\100psa.pencom.com
665 +                                       spp\100psasolar.colltech.com
666 +                                       spp\100spotter.yi.org
667 stef\100mongueurs.net                   stef\100payrard.net
668 +                                       s.payrard\100wanadoo.fr
669 +                                                                               properler\100freesurf.fr
670 +                                                                               stef\100francenet.fr
671 sthoenna\100efn.org                                             ysth\100raven.shiftboard.com
672
673 tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
674 tchrist\100perl.com                      tchrist\100mox.perl.com
675 +                                        tchrist\100jhereg.perl.com
676 thomas.dorner\100start.de                tdorner\100amadeus.net
677 tjenness\100cpan.org                     t.jenness\100jach.hawaii.edu
678 +                                        timj\100jach.hawaii.edu
679 tom.horsley\100mail.ccur.com             tom.horsley\100ccur.com
680 +                                        tom\100amber.ssd.hcsc.com
681
682 vkonovalov\100lucent.com                  vkonovalov\100peterstar.ru
683 +                                         konovalo\100mail.wplus.net
684 +                                         vadim\100vkonovalov.ru
685 +                                         vkonovalov\100spb.lucent.com
686 +                                         vkonovalov\100alcatel-lucent.com
687
688 whatever\100davidnicol.com                davidnicol\100gmail.com
689 wolfgang.laun\100alcatel.at               wolfgang.laun\100chello.at
690 +                                         wolfgang.laun\100thalesgroup.com
691 +                                         wolfgang.laun\100gmail.com