well, it's nothing really elegant or elite.. but it's my first attempt...(works with -w and use strict)comments/suggestions more than welcome :P
push@ARGV,qq;<$0;;$_.=1;$_=(<>)until y;@ARGV,qq;; ;s{[^;]}}}g;chop until m/^;{7}$/;@_=split'',q&z_MZUX^& ; unshift @;,chop^pop @_ while$_;$_=join'',@;;print
Update: works as one-liner, but only when d/l, not on command line..added whitespace.