Author: autrijus Date: Sat Apr 1 10:36:25 2006 New Revision: 8523 Modified: doc/trunk/design/syn/S05.pod
Log: * S05: $/.() is now $$/. $() still works as $$/, and we have @() %() forms that maps to @$/ and %$/. Modified: doc/trunk/design/syn/S05.pod ============================================================================== --- doc/trunk/design/syn/S05.pod (original) +++ doc/trunk/design/syn/S05.pod Sat Apr 1 10:36:25 2006 @@ -13,9 +13,9 @@ Maintainer: Patrick Michaud <[EMAIL PROTECTED]> Date: 24 Jun 2002 - Last Modified: 25 Feb 2006 + Last Modified: 1 Apr 2006 Number: 5 - Version: 12 + Version: 13 This document summarizes Apocalypse 5, which is about the new regex syntax. We now try to call them "rules" because they haven't been @@ -1120,18 +1120,18 @@ =item * -When called as a closure, a Match object evaluates to its underlying +When used as a scalar, a Match object evaluates to its underlying result object. Usually this is just the entire match string, but you can override that by calling C<return> inside a rule: - my $moose = m:{ + my $moose = $(m:{ <antler> <body> { return Moose.new( body => $<body>().attach($<antler>) ) } # match succeeds -- ignore the rest of the rule - }.(); + }); -C<$()> is a shorthand for C<$/.()> or C<$/()>. The result object -may be of any type, not just a string. +C<$()> is a shorthand for C<$($/)>. The result object may be of any type, +not just a string. You may also capture a subset of the match as the result object using the C<< <(...)> >> construct: @@ -1149,8 +1149,8 @@ This means that these two work the same: - / <moose> { $<moose>.() as Moose } / - / <moose> { $<moose> as Moose } / + / <moose> { return $$<moose> as Moose } / + / <moose> { return $<moose> as Moose } / =item * @@ -1172,8 +1172,13 @@ $mystring = "{ m:w/ (\S+) => (\S+)/[] }"; +Or cast it into an array: + + $mystring = "@( m:w/ (\S+) => (\S+)/ )"; + Note that, as a scalar variable, C<$/> doesn't automatically flatten -in list context. Use C<@$/> or C<$/[]> to flatten as an array. +in list context. Use C<@()> as a shorthand for C<@($/)> to flatten +the positional captures under list context. =item * @@ -1185,8 +1190,8 @@ capture datatypes.) Note that, as a scalar variable, C<$/> doesn't automatically flatten -in list context. Use C<%$/> or C<$/{}> to flatten as a hash, or bind -it to a variable of the appropriate type. +in list context. Use C<%()> as a shorthand for C<%($/)> to flatten as a +hash, or bind it to a variable of the appropriate type. =item *