I seldom disagree with what you say ... in this case, however, I do, since assignment does indeed have a side effect since it returns a logical true when it was successful. Otherwise the following code would not work:
if ( my $a = 2 )
{
print "Assigned a value to $a";
}