If you're not processing high volume messages, the most workable solution is to write a C (C++/Java) program and call it from perl.
In the Tibco installation folders there is a folder called "samples/c", that contains a few easy examples of C programs (tibemsMsgProducer/tibemsMsgConsumer) writing and reading the EMS queues.