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