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


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

Because "foo\n" =~ /foo$/, I tend to explain it differently. ^ and $ are begin and end of a line, but /m modifies the meaning of "line".

I don't see how that explanation can work, though. $ only ever means EOL when /m is operative. You can see that by running:

"foo\nbar" =~ /foo$/ or print "Didn't match EOL :-(\n";

I see that you've updated the sheet to just:

^ begin $ end (before \n)
Can I suggest that (if you also used the suggestion at the end of this node) that could just become:
^ start of str $ end of str (incl \n)
Those descriptions would be sufficient if you were also more explicit about /s and /m. Explaining that they mean singleline and multiline respectively doesn't really help newbies remember which is which or what each of them does. Heck, if uri hadn't taught me the mnemonic that /s changes a Single metacharacter (i.e. .) whilst /m changes Multiple metacharacters (i.e. ^ and $), then I still wouldn't be able to remember which is which myself!

So maybe you'd like to consider changing them to something like:

/m ^ = SOL, $ = EOL /s . matches \n too