Thanks for all the advice. Much appreciated. The problem has been sorted out now. Apparently its to do with the fact that PDL treats an N-PDL as a row-vector and a 1xN-PDL as a column vector, unlike Matlab.
This took care of that.
$X = $A x $B x $C->xchg(0,1) x $D;
I'm still not quite understanding but hey, it works.