It's not explicitly documented but it's stated in perlsyn that the assignment operator works "as in C", and it has the same right-to-left associativity as C's, and the value of the assignment is itself a valid rvalue for another subsequent assignment. Granted it's not chiseled into stone tablets, but I don't think that it's a "ZOMGWTFBBQ no one knows what'll happen just don't do that" case like ++$a + $a++ is.
That being said, your alternative with the separate assignment before use is definitely a clearer implementation.
The cake is a lie.
The cake is a lie.
The cake is a lie.