Hello All,

I have been asking Autrijus about getting the substitution regexp working in Pugs, and a few issues have come up which need some clarification.

In the Smart Matching table in Synopsis 04, there is a mention of 'subst' (here is that snippet so you don't have to go digging):

    $_      $x        Type of Match Implied    Matching Code
    ======  =====     =====================    =============
    Any     subst     substitution match*      match if $_ ~~ subst

This seems to be the first mention of 'subst', and no real clarification followed after. I search the other Synopsis and found it again, all the way a the very very very bottom of Synopsis 05, where it is mentioned as a method form of s/// (again here is the snippet):

        There are also method forms of C<m//> and C<s//>:

        $str.match(//);
        $str.subst(//, "replacement")
        $str.subst(//, {"replacement"})
        $str.=subst(//, "replacement")
        $str.=subst(//, {"replacement"})

This though, only seemed to muddy the waters more.

Further discussion on #perl6 lead to more questions regarding subst and s///. What follows is the list of questions raised by this conversation.

Is subst an object/type?
Or is it a method of the Str object?

If it is an object ...
        
        Does s/// produce a subst object?
        Does a subst object .hasa rule object(s)?
                If so can we extract those rule object(s) from it?
        What exactly does a subst object do?
        How does a subst object stringify?
        Etc. etc. etc.

If it is a method ...
        
        How would a method on the right hand side of ~~ work exactly?
        Is
                ~~ s:perl5:g/a/b/
        the same as
                ~~ .subst(rx:perl5/a/, "b")
        or
                ~~ .subst(rx:perl5/a/, {"b"})

Thanks,

Stevan



Reply via email to