My implementation in the perl core was a compromise between complexity, performance and convenience. It's currently about 750 lines of src code. It could certainly be expanded to extract the variable name under more circumstances, but I had to draw a line somewhere.
Note also that it's quite hard to avoid false positives. For example, for an empty array @a, in $a + $a at the time of execution of the addition, both args are the same special address &PL_sv_undef, so its not possible to determine whether a particular undef value came from the LHS or the RHS.