The new smart match dispatch table for 5.10.1 onwards
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Wed, 4 Mar 2009 20:14:10 +0000 (21:14 +0100)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Wed, 4 Mar 2009 20:14:10 +0000 (21:14 +0100)
commit202d7cbdf6efc5f9c138c4460dce6d5b72603d2b
treefabeeb42707c4ac08856e8a8db79150d1efd9221
parentaa2407c5c40c18416d30710d13b3c1423d0bb212
The new smart match dispatch table for 5.10.1 onwards

This /does/ break backwards compatibility. Changes to come are:

- ~~ is no longer commutative. Dispatch is now done based on the
  (run-time) type of the right side argument.
- The right side can be a ".." range, which will be treated specially,
  and no longer as a boolean operator (as in scalar context).
- when() should treat "..." as a boolean operator.
- Coderefs with an empty prototype are no longer special.
- Any ~~ Array distributes the smart match test.
- Comparing two coderefs is no longer a special case and does not
  perform referential equality. (Use \&foo ~~ "".\&bar for that.)

This patch also documents that ~~ won't work on objects that don't
overload it, except in the expression $object ~~ undef.
pod/perlsyn.pod