全ての機能を満たさない部分的な機能を担う奴でもかまいません。よろしくお願いします。
http://www.csdinc.co.jp/archiver/lib/unlha32.html
環境はわかりませんが、lzhが解凍できる環境を整えてexecしてしまってはどうでしょうか?
exec "lha e $filename"
ネットにあるlzhを拾うにはLWPモジュールを使うのが良いでしょう。
http://homepage3.nifty.com/hippo2000/perltips/LWP/Simple.html
LZHを解凍するモジュールは見つかりませんでしたので、system()などを使って解凍することになると思います。
ちなみにZIPファイルならArchive::ZIPモジュールで解凍できると思います。
http://search.cpan.org/~smpeters/Archive-Zip-1.16/lib/Archive/Zi...