Since you mention algebraic in the title (but not in the body) of your question, I feel I have to ask: are you actually doing algebraic (symbolic) calculations?
If yes, you should use a proper computer algebra system (Mathematica, Maple, Maxima, yacas, ...). Despite all the love for Perl, using a tool better suited for the job will save you lots of time and trouble.
If no, Physics::Unit might be worth considering for the units management. I haven't use it before, but looks quite comprehensive to me.
Regarding the repetitive aspect, it's a good idea to factor commonly use things out into subroutines, and collect them in a module. That way, repetitiveness reduces over time.