[comp.lang.perl] Program to convert Vax mail lists to mmdf format.

wengland@stephsf.stephsf.com (Bill England) (01/29/91)

  Heres a Perl program I just hacked this afternoon to convert an
  alumni list an former prof of mine mailed  me.  I don't work on 
  Vax'en but others who get Vax'en mailing lists might want to 
  convert them to somting usefull (and readable ;-)   )

  If anyone has a chance to enhance my edits please 
  feel free. (Hint, Hint)

___ vax_to_mmdf ___
#! perl
## 
 #  Created by Stephen Software Systems, Inc. 1991 
 #
 #  This work is public domain and may be freely copied, modified,
 #  and distributed.
 #
 #  The purpose of this program is to convert those complex and messy
 #  looking VAX mail lists into a cleaner looking mmdf, Internet
 #  format.
 #
 #  While this program is set up to run in a Unix environment
 #  some simple modifications should allow it to run on a VAX
 #  with the Perl 3.0 patchlevel 44 release. ( You may have to
 #  do without the nifty sorting provided by sort. )
 #
 # This  program is distributed WITHOUT ANY WARRANTY and without 
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 # PARTICULAR PURPOSE.
 #
 #  Bugs:
 #    If some strange bang routing is declared it assignes the
 #    closest system a domain name of uucp.  This might work
 #    for sites close to uunet but, is probally incorrect for 
 #    many sites.
 #
 #    If it does not work try to get the site to send in a map
 #    to the rutgers mapping project. Or correct the VAX'en list
 #    used for input.
 # 
 #    This also does not work on multiple bang routings.
 #
 # # #
 #
 # This software system is currently under construction/design/hack,
 # Please don't mind the mess :-)   ...
 #
 # Formatting Notes:
 #     80 column width, 4 space tabs.
 #
 # Modification Notes;
 #
 #  Created:
 #      Bill England, Mon Jan 28 20:14:08 PST 1991
 # 
 # Please send problems, enhancements, and corrections to
 # support@stephsf.COM
##
eval "exec  perl -S $0 $*"
	if $running_under_some_shell;
#
format SORT_OUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< (@<<<<<<<<<<<<<<<<<<<<<<)
$e_mail,							  $name
.
#
open(SORT_OUT, "|sort -t@  -u +2 -3 +1 -2");
#
while(<>){
	chop;
	($junk, $rest) = split(/%"/);
	$rest =~ y/	/ /;   # replace tab with space
	$rest =~ y/"/ /;
	@add_name = split(/!/, $rest);
	foreach (@add_name){
		s/^( +)//eo;    # ditch leading and trailing spaces
		s/( +)$//eo;
		y/[\(\)]/-/;       # replace any parrens with a -, () denote comments
						   # for the mail header standards.
		0 while s/  /' '/eo; # reduce 2spaces to 1space.
	}
	$name = pop(@add_name);

	## Special logic to get rid of system specific routing. 
	 # gives unknown domain names a uucp domain.
	 #
	  if (@add_name > 1){
		($e_mail,$junk) = split(/@/, $add_name[1]);
		$e_mail .= '@';
		$e_mail .= "$add_name[0].uucp";
	}else{ # otherwise simply join the remaining array back together.
		$e_mail = join('!', @add_name);
	}
		$e_mail =~ y/[A-Z]/[a-z]/; # Change mail address to all lower case

	write SORT_OUT;
}
	close(SORT_OUT);

-- 
 +-  Bill England,  wengland@stephsf.COM -----------------------------------+
 |   * *      H -> He +24Mev                                                |
 |  * * * ... Oooo, we're having so much fun making itty bitty suns *       |
 |__ * * ___________________________________________________________________|