I'm probably opening up a whole new can of worms here, but if we said that the following were both vector operators:
^ == intersection operator v == union operator then these could have potentially useful meanings on their *own* as set operators, as well as modifying other operators. For example: @a = (1,2,3); @b = (4,1,3); @a = @a ^ @b; # @a = (1,3); @a = @a v @b; # @a = (1,2,3,4); ie @a = @a ^ @b; means grep($MARK{$_}++, @a); for @b { push (@result, $_) if ($MARK{$_} && !$MARK2{$_}++); } @a = @result; ---- @a = @a v @b; means grep( $MARK{$_}++, @a ); @result= @a; for @b { push (@result, $_) if (!$MARK{$_}++) } ---- I know that this is far more useful behavior than the currently proposed meaning of @a ^= @b... even though if its a little off kilter with the other meanings: @a = (1,2,3); @b = (4,1,3,5); @a ^+= @b; # (5,3,6); @a v+= @b; # (5,3,6,5); etc. etc. Ed