On Wed, Jun 08, 2005 at 12:20:57PM -0700, Larry Wall wrote: > : I'm not sure how this selection mechanism is meant to be used. > > The skip is meant to be applied after filtration. Don't filter out > things you want to see later, in other words.
Okay, caller done as r4555. Without :label for now, because we don't have that yet. > : - AES does not enumerate the complete member set. We can use that now :) > > Um. That's something I wouldn't mind delegating to whoever is slogging > it out on the ground. That's fine for caller, but half the examples for want imply things that aren't available in Pugs' exisitng want yet (count, rw), and I think they might not be straightforward to add. If there are other things come to mind they'll probably be easier to add all at once. [.sub -> .subname ; .sub returns coderef] > That's the direction we're going with &?SUB and $?SUBNAME, so I don't > see why it couldn't apply here too. Done. > It would be nice if the interfaces were similar where they try to do > similar things. > > But then, it might be nice to copy over the :nth($n) interface from > pattern matching too, somehow or other. Right now our selectors don't > have a way to generalize that. You almost want to be able to say > something like caller(3rd(Sub)), which causes ~~ to match Sub, but > only on the third thing that could be construed as a Sub, presuming > ~~ is treating the other argument as some kind of iterator. But up > till now we've been treating such iterators as external to ~~, with > the args matched one at a time. One could imagine seeing things like: > > given =$IN { > when 1st(/foo/) {...} > when 2nd(/bar/) {...} > when 3rd(/baz/) {...} > } > > but the semantics of such a construct are more than somewhat problematic. Is caller so time-critical that saying 3rd(caller(Sub)) is too bad? FWIW, this is how I interpreted caller(Sub, :skip<2>), as "the third sub". And unless I'm wrong, caller(Block, :skip<2>, :label<moose>) would mean, "once you get to the third Block, look on for one labeled "moose". So we don't have a way to skip three methods and then look for a labeled block, but if the user really wants that, let them grovel over a complete call chain themselves. -- Gaal Yahas <[EMAIL PROTECTED]> http://gaal.livejournal.com/