A lot of people above have posted some good stuff about
maintainable perl "style" and a few have posted about
reusing a good library (that is CPAN); however I think
maintainable code is maintainable code is maintainable code
(apologies to Gertrude Stein).
It really doesn't matter what the language is (Perl, C, C++, Java, Python, etc) or the method (structural or object oriented). The key to maintainble code is decomposition (structural -> functions or subroutines, object oriented -> classes and methods) and ensuring your decomposed code follows the "High Cohesion/Low Coupling" mantra. Ensuring your methods/functions/subroutines/whatever do one
thing well and "live" fairly independent (all necessary info
is either "passed" in or lives within the object) is the
nirvana of maintainable code.
-derby