in reply to order of evaluation of operands

in the seventies, the programming language theory people were really big on non-determinism. when it comes to things like short circuit evaluation and stuff like that, they liked to say: "based on compiler implementation, your answer is guaranteed to be non-deterministic..." which meant: "there ain't no way to know..." That lesson has stuck with me, and whenever I find myself in a situation that might lead itself to non-determinisim (in other words, any situation with a vauge answer) i make sure that I can validate the order of operations. In your case:
my $val1=&sub1; my $val2=&sub2; my $total=$val1+$val2;
i don't know if perl guarantees an order of operations, but do yourself a favor, and do a favor to whomever has to look at your code some day down the line, minimize non-determinism.