in reply to WDDX.pm weird eval error

If you do WDDX::$type->new(...) and it says "no such WDDX::3", then your $type has something you weren't expecting.

You get your $type variable by calling a subroutine. What does the subroutine return? It returns whatever you tell it to return, or the last expression evaluated.

Your subroutine's last line is (or was) a complicated thing which might explicitly return something, and might not. And if you comment out everything else in the sub, you're going to return the list ( $name, $row, $mode ). In scalar context, an array is noted for its length (3), while a list is noted for its last element, and it's perl's guess here as to which you might want to implicitly return.

--
[ e d @ h a l l e y . c c ]