Whew! I've carefully (well, I tried to be careful :-) read through
Apocalypse 5 twice now and it still makes my head hurt (but in a good
way). What follows is some notes that I jotted down and am tired of
looking at.  Please correct any misconceptions and feel free to add
where I've omitted.


Here's a quick table of the built-in modifiers that I saw and/or
surmised. Are there any others? (entries with ? are guesses or unknown
on my part)

long form       short form      meaning
:any            :a              match returns a list of anywhere the pattern
                                matches within the string regarless of overlap.
:each           :e              Apply the pattern each time we can
                                within the string? Is this what happened
                                to perl5's /g modifier?
:once           :o              Match succeeds exactly once (unless .reset)
:words          :w              Perform a "word match" treating
                                whitespace between patterns as if it
                                were \s+
:cont           :c              Continue from where the last match left off 
:ignorecase     :i              Match alphabetics case insensitively
:perl5?         :p5             Match using perl 5 rules
:unicode0?      :u0             dot matches bytes
:unicode1?      :u1             dot matches code points
:unicode2?      :u2             dot matches graphemes
:unicode3?      :u3             what dot matches is language dependent
:?              :1st            succeed on the first match
:?              :2nd            succeed on the second match
:?              :3rd            succeed on the third match
:?              :4th            succeed on the fourth match

This pattern continues for positive integers (i.e. :53rd succeeds on the
fifty-third match) It'd be simpler IMHO, if instead of the "st", "nd",
"rd", and "th" suffixes it were an "n" suffix. e.g., :53n would succeed
on the fifty-third match.

:1time?         :1x             match exactly one time
:2times?        :2x             match two times
:3times?        :3x             match three times

This pattern continues for all positive integers (i.e. :23x matches 23
times) Is the "x" necessary? In a later example s:3/// is used to
perform the s/// 3 times.

Can I use 0 in the above?  Will :0 never match?  Is there a way to
interpolate the number?  Does :$number work?

The text says:

        A modifier that starts with a number causes the pattern to match
        that many times. It may only be used outside the regex.

Why only outside the RE?  Why wouldn't /:3x foo/ be synonymous with
/foo<3>/?

And here's a table of built-in assertions; are there any others?

assertion       meaning
<alpha>         matches any alphabetic character
<digit>         matches any numeric character
<sp>            matches a space character
<prior>         match whatever the most recently successful match did
<null>          match nothing
<commit>        fails the match if backtracked to
<cut>           fails the match if backtracked to and removes the
                portion of the string that matched to that point
<before ...>    match if the pattern occurs before ...
<after ...>     match if the pattern occurs after ...

The example at the top of Backslash Reform ...

        $oldpos = pos $string;
        $string =~ m/... <( .pos == $oldpos )> .../;

Shouldn't that first line should be something like 

        $oldpos = $matchobj.pos;        # or ...
        $oldpos = pos $matchobj;        # or just ...
        $oldpos = pos;                  # uses the most recently seen 
                                        # match object
 
?

End of random ramblings ...

-Scott
-- 
Jonathan Scott Duff
[EMAIL PROTECTED]

Reply via email to