merlyn@iwarp.intel.com (Randal L. Schwartz) (12/11/90)
Instructions for your very own zipcode <=> nameplace database...
(1) go over to comp.binaries.ibm.pc, and fetch the 10 parts of zipcode.zoo.
(2) extract them with your favorite multipart uudecoder. I use this one:
##################################################
#!/local/usr/bin/perl
while (<>) {
$sawbegin++, last if ($mode,$file) = /^begin\s*(\d*)\s*(\S*)/;
}
die "missing begin" unless $sawbegin;
open(OUT,"> $file") if $file ne "";
while (<>) {
$sawend++, last if /^end/;
next if /[a-z]/;
next unless int((((ord() - 32) & 077) + 2) / 3) == int(length() / 4);
print OUT unpack("u", $_);
}
die "missing end" unless $sawend;
chmod oct($mode), $file;
exit 0;
##################################################
[Thanks to lwall for most of this uudecode program.]
(3) use "zoo" to extract "zipcode.dbf" from "zipcode.zoo". (I can't
remember where I got "zoo", but it's out there somewhere. :-)
(4) run the following Perl code:
##################################################
#!/local/merlyn/bin/perl
$recfmt = "a5 A15 a2 x1";
$reclen = length(pack($recfmt,())); print "length = $reclen\n";
open(Z, "zipcodes.dbf") || die;
seek(Z,130,0);
while(read(Z,$rec,$reclen)) {
($zip,$city,$state) = unpack($recfmt,$rec);
print "$zip $city $state\n";
}
close(Z);
##################################################
(5) Enjoy. Season to taste.
print "Just another Perl hacker (with a bit of zip),"
--
/=Randal L. Schwartz, Stonehenge Consulting Services (503)777-0095 ==========\
| on contract to Intel's iWarp project, Beaverton, Oregon, USA, Sol III |
| merlyn@iwarp.intel.com ...!any-MX-mailer-like-uunet!iwarp.intel.com!merlyn |
\=Cute Quote: "Intel: putting the 'backward' in 'backward compatible'..."====/