There are two situations that I can think of here...
- The curve is defined by an equation: In this case you can use some calculus to find the derivative of the equation. I did some checking on CPAN and think Math::Polynomial::Solve may work for you. I haven't used it though.
- The curve is a line-graph created by data points: I think this is more likely to be your situation, but don't understand how your peak could not be a data-point in this case since every segment on the graph starts and ends with datapoints.
Please let us know what kind of data you're working with. You've got me curious now and shaking some of the rust off my math skills couldn't hurt either.