t_rot takes a single argument, so you need to use (but see update below):
$e = t_rot([45,45,45]);
The other thing is that
$e will be a transform object which requires you to use it like this:
$d = $e->apply($c);
The final thing is that matrix multiplication is the
x operator whereas
* is component-wise multiplication.
Update: There's a bug in the code/documentation for t_rot. The work-around is to use t_linear and also specify a dims argument:
$e = t_linear({ rot => [45,45,45], dims => 3});
The problem can be demonstrated by setting
$PDL::Transform::debug = 1;:
$PDL::Transform::debug = 1;
$e = t_linear({ rot => [45,45,45] });
# the above will emit:
# PDL::Transform::Linear: assuming 2-D transform (set dims option to
+ change)