Disclaimer: IANAL. I am not a lawyer linguist.
The syntax of (for example) $cgi = new CGI; is called indirect object syntax, which is also said to be in the dative case. Are these actually the correct designations?
Let me elaborate on that question. The way I understand grammar, it should be direct object (or accusative) instead:
$ball = new Ball:Soccer; # Creates a soccer ball. kick $ball; # Ball::Soccer defines sub kick {...} # I.E. this reads $ball->kick;
We can easily defend that in this example, $ball is not a subject ("it performs the action expressed by the verb"). Rather it could be argued that it is a direct object ("Entity acted upon", I.E. the action is to kick, the thing which is kicked is the ball). Also:
One rule of thumb for English, however, is that an indirect object is not present unless a direct object is also present
For a dative case to be present, we'd need something like
$ball = new Ball::Soccer; $john = new Person; give $john $ball;
And even here, $ball would still be the direct object, or accusative (the object which is being given) and $john would be the indirect object, or dative (the object to which (or rather whom) the ball is being given).