in reply to polygon buffering algorithms

Math::Geometry::Planar has some good polygon manipulation libraries, including an interface to GPC for polygon intersection and clipping. For your buffering problem, try Math::Geometry::Planar::Offset.