in reply to how is = treated in argument?

Just how are you 'passing'  "v=33" as an argument? To what are you passing it? Can you show an example of  "=" disappearing? Otherwise, an expression like  $v = 33 behaves as expected: an assignment to a variable, which yields the value of the assignment.

c:\@Work\Perl>perl -wMstrict -le "sub S { print qq{S got $_[0]}; } ;; my $v = 0; print qq{\$v starts as $v}; ;; S($v = 33); print qq{\$v now $v}; " $v starts as 0 S got 33 $v now 33