Building translators between languages is hard. Building good translations between langauges that have different paradigms is harder, but you can likely do it. (Its easy to see that an OO target can simulate a procedural source without much trouble. Less obvious is that a procedural target can simulate an OO source; after all the OO langauge itself is implemented likely in assembler which is procedural).
It is easier to do this if you have good translator infrastructure, such as the DMS Software Reengineering Toolkit, which is generalized compiler technology parameterized by langauge descriptions for both input and output, and by transformation rules that map structures in one langauge to the other.
DMS works by parsing source code in the original language into ASTs, applying AST-to-AST rewrites that produce ASTs in the target langauge, applying further AST-to-AST rewrites on the target trees to optimize the answer, and then anti-parsing ("prettyprinting") the final AST back to compilable source text.
It has strong parsers, and complete front ends for a variety of tough languages such as C, C++, Java, C#, COBOL, PHP and (just recently added) Python. The folk theorem that says C++ is almost impossible to parse is proven false by DMS. We've considered a Perl parser, and think the folk theorem that says there only Perl can parse Perl is similarly false.
(Some might say, "so why don't you have it?" The answer is the other front end are not impossible but not easy either and it take awhile to get around to the less mainstream languages).
Building a translator requires effort, too, but really spectacular ones have been built using DMS. See the B-2 Stealth Bomber mission software translator we built with DMS.
Even with this background, I'd hesitate before I took on a Perl to Python translator.