It seems to me you'll need to invent an encoding scheme and build the required "normal" program string from a string consisting of characters in the ord range 0-32 ... then use Perl's eval function (or perhaps s///ee) to evaluate it.
This looks like a tricky problem to me, especially for a Perl novice. Many approaches are possible. One way to get started is to use the s/// and the y/// operators with a delimiter less than ord(32) like so:
where ^A to ^Z above are CTRL-A to CTRL-Z (i.e. chars with ord 1..26). Running the little test program above produces:s^Z^Z^A^B^C^D^E^F^G^H^Z; y^Z^A^B^C^D^E^F^G^H^Za-z^Z; print
You may be able to extend this scheme to produce whatever 30 or so characters are required by a "normal" (unencoded) solution. Having generated the required program string, you could replace the print above with eval. That would seem to yield a solution of around 11 "characters" in length. If you start down this road, you may find further inspiration as you try out ideas.abcdefgh
Some old nodes from mtve might provide further ideas you could try: