in reply to Perl data -> lisp data, very simply
This doesn't handle globjects; you can perhaps modify those ifs not to be terminal, though I don't know how you'd express cohabitation in the lisp side.