http://qs321.pair.com?node_id=216862


in reply to Re: Re: Re: Perl cheat sheet
in thread Perl cheat sheet

(Sorry, no quote, as I have currently no way of performing a copy/paste)

I'll be so glad when Perl 6 arrives. While ^ usually isn't a problem, explaining $ can be tough. Maybe my "line" explanation wasn't clear.

This is how I have always seen ^ and $:
Without /m
^ matches the null-string at the beginning of a line;
$ matches the null-string at the end of the line, just before \n, if present;
The string has only one line, \n characters are ignored if they're not followed by \z.
With /m
^ matches the null-string at the beginning of a line;
$ matches the null-string at the end of the line, just before \n, if present;
The string has multiple lines, each line begins after \A or \n, and ends before \n or \z.

But you are probably correct in that this is a strange way of making things clear.

I did remove "line" to avoid confusion. I think that "end of string" is a not a good explanation of $, unless /m is explained in more detail. Your new suggestion (mentioning what /s and /m do instead of what the modifiers stand for) helps. I hope it fits in the limited space. Update: it does :)

If I were to explain it using regexes, I'd say $ is /m ? (?=\n|\z) : (?=\n?\z) and that ^ is /m ? (?:(?<=\A)|(?:<=\n)) : \A. I doubt that helps much for a cheat sheet, though :) (note: untested)

Thanks again.

- Yes, I reinvent wheels.
- Spam: Visit eurotraQ.