A word of caution - ZIP codes are not meant for mapping - they are meant for delivering mail. You're better off geocoding with FIPS codes. You can check out Census Bureau mapping resources at http://www.census.gov/geo/www
Re^3: Geographical Map
Replies are listed 'Best First'.
For geocoding / user mapping, it's worth looking at:
Geo::Coder::US ( and http://geocoder.us )
for shape drawing and projection, check out:
Geo::Shapelib (which has a much nicer API than Geo::Shapefile)
UMN MapServer rocks, and talks to free GIS backends like PostGIS. GRASS walks all over ESRI; http://freegis.org/ hopefully suggests that you have no need to buy ESRI products.
Here here! I've mentioned many a time in the CB that zip codes are (not necessarily contiguous) polylines in 3 space,
not polygons. ZCTAs are also usable for this kid of thing --
Zip Code Tabulation Areas are the Census Bureau's solution to the hairy nature of zip codes. Other census ploygons such
as block groups are good too.